我有一个网站,其中人们的“登录”状态由他们的会话cookie确认(以及他们登录后获得的会话中的值)。该cookie设置为httpOnly&需要SSL。
假设某人有2个Firefox窗口打开,窗口(A)有我的应用程序并且他们已登录,窗口(B)还有其他东西打开。
如果他们关闭窗口(A)而没有明确注销,那么打开一个新窗口(C)并从我的Web应用程序访问一个仅登录的资源,它仍然会加载,因为cookie 仍然< / em>那里和他们都经过身份验证。我的会话超时已经非常低,但我需要阻止这种攻击,因为人们可能会在公共计算机上访问他们的数据。
如何防止这种情况发生?
答案 0 :(得分:1)
不了解其他浏览器,但Firefox在所有浏览器窗口中保持相同的会话ID。您应该关闭Firefox的所有窗口以生成新的会话ID。因此,在您的示例关闭窗口A和B中,然后打开C,您应该被重定向到登录页面或其他东西。
答案 1 :(得分:0)
你可以采用一种简单的方法来破坏window.close事件上的cookie。
答案 2 :(得分:0)
大多数浏览器都具有此功能,因为所有窗口都可以共享同一站点的相同会话cookie。我不知道服务器端是否阻止浏览器执行此操作。
如果你绝对需要阻止这种情况发生,那么我只建议在页面本身或查询字符串中存储一个额外的值,并在你的会话中确认这个值。
尽管如此,这可能会对你的安全进行彻底改革。