asp.net - session 固定 - 表单例份验证

标签 asp.net session testing

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

谢谢

最佳答案

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

攻击从攻击者访问网站并建立有效 session 开始,当应用程序提供包含 session ID 的 cookie 时,攻击者已修复或锁定已知的良好 session 。然后,攻击者将诱骗受害者使用此 session ID。此时攻击者和受害者共享相同的 Session ID。现在,只要存储在固定 session 中的信息用于为受害者做出决定或显示只有受害者应该看到的信息,攻击者就有可能使用和查看这些信息!你可以read more here .

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

请记住,在 ASP.net 中 Session.Abandon() 不足以完成此任务,它不会从用户浏览器中删除 session ID cookie,因此对同一应用程序的任何新请求, session被放弃后,会使用相同的session ID和一个新的Session State实例! As Microsoft states here .您需要放弃 session 清除 session 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 的好文章以及如何解决。

关于asp.net - session 固定 - 表单例份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10869216/

相关文章:

c# - 如何使用DetailView显示一条选定的记录?

asp.net - .ASPX 页面标记正在网络浏览器中打开

asp.net - 使用 ASP.NET Core WebAPI 的 Dart 中的 token 刷新并发问题

asp.net - 什么是最好的负载测试工具?

java - 如何从 JMockit 模拟静态方法

asp.net - 这个属性 "headerindex="5h"是什么?

java - 谷歌应用程序引擎/Java : ConcurrentModificationException thrown when using session. setAttribute()

php - 重定向后 Codeigniter session 销毁

jquery - 使用 jquery 保存 session 变量似乎不起作用

python - 为什么在测试中没有将查询添加到 Django 的 db.connection.queries 中?