我的理解是ASP生成一个cookie来验证会话。但是,如果该cookie是通过非https频道来回发送的,我不能仅仅通过欺骗cookie来欺骗它吗? cookie可以锁定到特定的IP或其他机器指纹吗?
答案 0 :(得分:4)
ASP.NET中的会话未经过身份验证 - 身份验证完全是独立的。通过获取会话cookie并重新创建它是的,您可以劫持会话,如果您取消身份验证cookie,那么您可以作为用户进行身份验证(这是默认情况下身份验证cookie过期的原因) - 请参阅http://msdn.microsoft.com/en-us/library/ms178581.aspx
安全说明很清楚;
SessionID值以明文形式发送,无论是cookie还是 URL的一部分。恶意用户可以访问会话 另一个用户通过获取SessionID值并将其包含在中 请求到服务器。如果您要存储敏感信息 会话状态,建议您使用SSL加密任何 浏览器和服务器之间的通信,包括 SessionID值。
答案 1 :(得分:1)
在我上一份工作中,我们通过在数据库中跟踪用户的会话ID(我们在URL中附加了guid作为查询字符串,还有其他方法)解决了这个问题,我们还会存储发出请求的ip地址。对于所有后续请求(具有会话ID的任何内容,需要获取任何敏感信息),我们只需检查会话ID和ip,根据我们进行身份验证和设置会话时存储的值进行请求。 Request.UserHostAddress更难以欺骗。有一些开销,但它比cookie更安全。