6

我使用的表单身份验证是 ASP.NET。我正在为一个学校项目进行渗透测试。我正在使用 LENS -ASP.NET 穿透测试工具。结果告诉我,我的应用程序可能容易受到会话固定的影响。有谁知道如何减轻这种情况?

谢谢

4

1 回答 1

12

会话固定是一种攻击,其中一个人固定另一个人的会话标识符 (SID)。

攻击从攻击者访问网站并建立有效会话开始,当应用程序传递包含会话 ID 的 cookie 时,攻击者已修复或锁定已知的良好会话。然后,攻击者将欺骗受害者使用此会话 ID。此时攻击者和受害者共享相同的 Session ID。现在,任何时候存储在此固定会话中的信息用于为受害者做出决定或显示只有受害者应该看到的信息,都可能被攻击者使用和查看!你可以在这里阅读更多

唯一的解决方法是让 ASP.NET在任何成功的身份验证后发出一个新的会话 ID,这样一旦受害者登录,攻击者将无法访问该会话。要记住的另一点:在用户登录之前永远不要传递会话。

请记住,在 ASP.netSession.Abandon()中不足以完成此任务,它不会从用户浏览器中删除会话 ID cookie,因此对同一应用程序的任何新请求,在会话被放弃后,将使用相同的会话 ID 和新的会话状态实例!正如微软在这里所说。您需要放弃会话清除会话 ID cookie:

Session.Abandon();
Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));

在您的web.config文件中更改表单身份验证 cookie 名称也是一个好习惯:

<authentication mode="Forms">
  <forms name=".CookieName" loginUrl="LoginPage.aspx" />
</authentication>

这是一篇关于会话攻击和 ASP.NET以及如何解决它的好文章。

于 2012-06-03T10:21:30.273 回答