ASP.NET中的会话固定

2vuwiymt  于 2023-11-20  发布在  .NET
关注(0)|答案(4)|浏览(124)

我想知道如何防止ASP.NET中的会话固定攻击(参见http://en.wikipedia.org/wiki/Session_fixation
我的方法通常是每当有人登录时生成并发出一个新的会话ID。但是这种级别的控制在ASP.NET中可能吗?

ev7lccsx

ev7lccsx1#

在任何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请求对此进行错误修复
有一个解决方法可以确保生成新的会话ID,详细信息见http://support.microsoft.com/kb/899918,这涉及到调用Session.Abandon,然后清除会话ID cookie。
如果ASP.NET不依赖于开发人员来做这件事,那就更好了。

6psbrbz9

6psbrbz92#

基本上,只需在LoginGET方法和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);
}

字符串

2exbekwf

2exbekwf3#

如果我的假设是正确的,你在谈论. http://en.wikipedia.org/wiki/Session_fixation。简短的回答是肯定的,你有很多方法可以保护你的cookie。你不应该使用无cookie会话,当你使用会话时,确保你已经明确地保护了cookie。
看看这篇文章... http://blogs.msdn.com/rahulso/archive/2007/06/19/cookies-case-study-with-ssl-and-frames-classic-asp.aspx

rkkpypqq

rkkpypqq4#

它会在用户登录时生成一个新的会话ID,并在超时或用户离开/关闭浏览器时终止会话。您可以通过Abandon()编程终止会话或通过Remove()删除条目。
所以我不知道问题出在哪?

相关问题