我使用窗体身份验证是ASP.NET。我正在针对学校项目进行深入测试。我正在使用LENS -ASP.NET PENETRATING TESTING TOOL。在结果中,它告诉我,我的申请可能会受到会话固定的影响。有谁知道这可以减轻对抗?会话固定 - 窗体身份验证
由于
我使用窗体身份验证是ASP.NET。我正在针对学校项目进行深入测试。我正在使用LENS -ASP.NET PENETRATING TESTING TOOL。在结果中,它告诉我,我的申请可能会受到会话固定的影响。有谁知道这可以减轻对抗?会话固定 - 窗体身份验证
由于
会话固定是其中一个人注视另一个人的会话标识符(SID)的攻击。
攻击开始与攻击者访问该网站,并建立一个有效的会话,当应用程序提供包含会话ID cookie中,攻击者已经固定,或锁定中,已知良好的会话。然后攻击者将诱骗受害者使用此会话ID。此时攻击者和受害者共享相同的会话ID。现在,无论何时存储在此固定会话中的信息都用于为受害者做出决定或仅显示受害者应该看到的信息,这些信息可能被攻击者潜在使用和查看!你可以read more here。
这个唯一的解决方法将是ASP.NET到问题的任何成功验证后一个新的会话ID,这样,一旦被害人登录,攻击者必须将会议的访问权限。还有一点要记住:中从来没有实现会话,直到用户登录
记住,在ASP.net Session.Abandon()
不足以完成这个任务,它不会从用户的浏览器中删除会话ID的Cookie,所以任何新在会话被放弃之后,对同一个应用程序的请求将使用相同的会话ID和新的会话状态实例! As Microsoft states here。你需要放弃会话和清晰的会话ID的Cookie:
Session.Abandon();
Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));
这也是一个很好的做法,以改变窗体身份验证cookie名称,在web.config
文件:
<authentication mode="Forms">
<forms name=".CookieName" loginUrl="LoginPage.aspx" />
</authentication>
这里有一个很好的文章在Session Attacks and ASP.NET以及如何解决它。