终止服务器上的会话标识符



我们对我们的网站进行了安全测试,并且已经确定了一个漏洞。

essue

如果会话标识符是可以访问的攻击者 用户的工作站可以使用 用户终止会话后的会话cookie。

建议

确保会话标识符在服务器上正确终止 调用注销功能时。

代码

代码当前执行此操作(如果用户单击"登录按钮")

        FormsAuthentication.SignOut();
        Roles.DeleteCookie();
        Session.Clear();

我不确定如何检查"调用注销函数"时在服务器端正确终止会话标识符。"

我已经做了一些研究,认为我应该这样做吗?

        Session.Abandon();

如果没有,我该怎么办?(我不确定如何测试...)

在ASP.NET Session.Abandon()中不足以完成此任务,它不会从用户的浏览器中删除会话ID cookie,因此在放弃会话后,任何新请求到同一应用程序,将使用相同的会话ID和新的会话状态实例!如Microsoft在这里所述。您需要放弃会话清除会话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以及如何解决的好文章。

最新更新