ASP.net安全cookie有多安全?

4

我理解的是ASP生成一个cookie来验证会话。然而,如果该cookie在非https通道上来回发送,那么我能否通过伪造cookie来欺骗系统?该cookie是否可以锁定到特定的IP或其他机器指纹上?


如果Cookie与其他参数一起锁定,则所有参数都必须前后一致。因此,如果有人可以读取Cookie,则也可以读取其余的参数。 - Aristos
2个回答

4
ASP.NET中的会话并未经过身份验证 - 身份验证完全是分开的。通过获取会话cookie并重新创建它,您可以劫持会话;如果您提取身份验证cookie,则可以作为用户进行身份验证(这就是为什么默认情况下,身份验证cookie会过期的原因)- 请参见http://msdn.microsoft.com/en-us/library/ms178581.aspx
安全提示非常清晰:
SessionID值以明文形式发送,无论是作为cookie还是作为URL的一部分。恶意用户可以通过获取SessionID值并将其包含在对服务器的请求中来访问另一个用户的会话。如果您在会话状态中存储敏感信息,则建议使用SSL加密浏览器和服务器之间包括SessionID值在内的任何通信。

1
在我的上一份工作中,我们通过跟踪用户的会话ID(我们将guid作为查询字符串附加到URL中,还有其他方法)来解决这个问题,并将发出请求的IP地址存储在数据库中。对于所有后续请求(任何具有会话ID的内容,需要获取任何敏感信息),我们只需检查会话ID和发出请求的IP是否与我们在身份验证和设置会话时存储的值相匹配。Request.UserHostAddress比较难伪造。虽然存在一些开销,但它比cookie更安全。

只是好奇 - 你有没有警报机制来提醒这个检查失败了,如果有的话,它在生产环境中是否出现过? - asawyer
我们所有的应用程序都有某种形式的记录。我不记得它发生过,但在我们做出改变之前,在生产中它很猖獗。我们的问题不是黑客,而是URL共享者。企业员工会发送链接给代理商,没有意识到该链接及其会话ID提供了访问数据的权限。他们会选择一个代理作为示例,并将该代理的数据暴露给他们分享链接的所有人。这种机制彻底制止了这种做法。他们只能被拒绝访问,如果我记得正确的话,会被重定向到登录页面。 - KennyZ
非常有趣,谢谢。我实现了一个非常类似的入侵断路器,在4年中从未出现过触发的情况。 - asawyer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接