我们对我们的网站进行了安全测试,并且已经确定了一个漏洞。
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以及如何解决的好文章。