ASP.NET中的会话劫持保护

时间:2010-05-26 10:44:53

标签: asp.net security session session-hijacking

我想知道当前版本的ASP.NET中内置了什么会话ID劫持保护。

我最近看到this very informative article解释了如何通过实现将IP地址和用户代理标头编码到会话ID中的附加层来增强会话安全性。然后在随后的每个请求中验证这些详细信息。

似乎这篇文章是为ASP.NET 1.1编写的,所以我想知道现在是否在ASP.NET中构建了类似的东西。实现这样一个额外的层仍然有什么好处吗?

感谢。

2 个答案:

答案 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的一般安全建议的实践小组。

http://msdn.microsoft.com/en-us/library/ff649100.aspx

答案 1 :(得分:2)

嘿,我一直在寻找降低会话ID劫持风险的方法。我也读过Jeff Prosise's article,我认为它可能有用;然而,就像你一样,我想看看相同的方法是否适用于现代版本的框架(他的电子邮件wicked@microsoft.com不能正常工作)

jkohlhepp,我不同意你的帖子(或者我不理解):

  

您可能不应该使用Session作为安全措施。相反,我建议依赖ASP.NET安全性(身份验证,授权)

据我所知,asp.net身份验证依赖于会话ID(除了似乎更糟糕的cookieless之外:See Dino Esposito's opinion

所以,这几乎把我们放在了开始的地方。