会话固定 - 表单身份验证

时间:2012-06-03 09:30:04

标签: asp.net session testing

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

由于

1 个答案:

答案 0 :(得分:11)

会话固定是一个人固定另一个人的会话标识符(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", ""));

web.config文件中更改表单身份验证Cookie名称也是一种很好的做法:

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

这是一篇关于Session Attacks and ASP.NET的好文章以及如何解决它。