我想知道当前版本的ASP.NET中内置了什么会话ID劫持保护。
我最近看到this very informative article解释了如何通过实现将IP地址和用户代理标头编码到会话ID中的附加层来增强会话安全性。然后在随后的每个请求中验证这些详细信息。
似乎这篇文章是为ASP.NET 1.1编写的,所以我想知道现在是否在ASP.NET中构建了类似的东西。实现这样一个额外的层仍然有什么好处吗?
感谢。
答案 0 :(得分:6)
从会话概述文档中查看此代码段:
System.Web.SessionState.HttpSessionState.SessionID值以明文形式发送,无论是作为cookie还是作为URL的一部分。恶意用户可以通过获取SessionID值并将其包含在对服务器的请求中来访问另一个用户的会话。如果要以会话状态存储敏感信息,建议您使用SSL加密浏览器和服务器之间包含SessionID值的任何通信。
http://msdn.microsoft.com/en-us/library/ms178581.aspx
在我看来,这意味着Session中没有任何安全性,因此您可能不应该使用Session作为安全措施。相反,我建议依赖ASP.NET安全性(身份验证,授权)。
以下是来自Patterns& Sons的文章。关于ASP.NET的一般安全建议的实践小组。
答案 1 :(得分:2)
jkohlhepp,我不同意你的帖子(或者我不理解):
您可能不应该使用Session作为安全措施。相反,我建议依赖ASP.NET安全性(身份验证,授权)
据我所知,asp.net身份验证依赖于会话ID(除了似乎更糟糕的cookieless之外:See Dino Esposito's opinion)
所以,这几乎把我们放在了开始的地方。