AJM*_*AJM 16 asp.net security session
我想知道如何防止ASP.NET中的会话固定攻击(参见http://en.wikipedia.org/wiki/Session_fixation)
我的方法通常是在有人登录时生成并发出新的会话ID.但是这种控制级别是否可以在ASP.NET中使用?
AJM*_*AJM 17
一直在做更多的挖掘.防止任何Web应用程序中的会话固定攻击的最佳方法是在用户登录时发出新的会话标识符.
在ASP.NET Session.Abandon()不足以完成此任务.Microsoft在http://support.microsoft.com/kb/899918中声明:""当您放弃会话时,会话ID cookie不会从用户的浏览器中删除.因此,只要会话被放弃,对同一应用程序的任何新请求都将使用相同的会话ID,但会有一个新的会话状态实例.""
已在https://connect.microsoft.com/feedback/viewfeedback.aspx?FeedbackID=143361&wa=wsignin1.0&siteid=210#details上请求修复此错误.
有一种解决方法可以确保在http://support.microsoft.com/kb/899918上详细生成新的会话ID,这涉及调用Session.Abandon然后清除会话ID cookie.
如果ASP.NET不依赖开发人员这样做会更好.
基本上只需在您的Login GET方法和您的Logout方法中执行此操作:
Session.Clear();
Session.Abandon();
Session.RemoveAll();
if (Request.Cookies["ASP.NET_SessionId"] != null)
{
Response.Cookies["ASP.NET_SessionId"].Value = string.Empty;
Response.Cookies["ASP.NET_SessionId"].Expires = DateTime.Now.AddMonths(-20);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17818 次 |
| 最近记录: |