ASP.NET会话状态安全问题

时间:2009-10-01 07:39:13

标签: c# asp.net

我有一个网站,其中人们的“登录”状态由他们的会话cookie确认(以及他们登录后获得的会话中的值)。该cookie设置为httpOnly&需要SSL。

假设某人有2个Firefox窗口打开,窗口(A)有我的应用程序并且他们已登录,窗口(B)还有其他东西打开。

如果他们关闭窗口(A)而没有明确注销,那么打开一个新窗口(C)并从我的Web应用程序访问一个仅登录的资源,它仍然会加载,因为cookie 仍然< / em>那里和他们都经过身份验证。我的会话超时已经非常低,但我需要阻止这种攻击,因为人们可能会在公共计算机上访问他们的数据。

如何防止这种情况发生?

3 个答案:

答案 0 :(得分:1)

不了解其他浏览器,但Firefox在所有浏览器窗口中保持相同的会话ID。您应该关闭Firefox的所有窗口以生成新的会话ID。因此,在您的示例关闭窗口A和B中,然后打开C,您应该被重定向到登录页面或其他东西。

答案 1 :(得分:0)

你可以采用一种简单的方法来破坏window.close事件上的cookie。

答案 2 :(得分:0)

大多数浏览器都具有此功能,因为所有窗口都可以共享同一站点的相同会话cookie。我不知道服务器端是否阻止浏览器执行此操作。

如果你绝对需要阻止这种情况发生,那么我只建议在页面本身或查询字符串中存储一个额外的值,并在你的会话中确认这个值。

尽管如此,这可能会对你的安全进行彻底改革。