1

假设我有一个金字塔应用程序,UnencryptedCookieSessionFactoryConfig用于 csrf 令牌和身份验证SessionAuthenticationPolicy。会话 cookie 的默认超时时间是 1200,这意味着我的用户在 20 分钟后断开连接,这很烦人。

我很想提高超时甚至删除它,并设置一个 max_age 以使其在浏览器中存活,但我想超时是有充分理由的。

拥有长期会话 cookie 是否存在安全风险?它被认为是不好的做法吗?

我的猜测是 csrf 令牌应该是短暂的。在这种情况下,我应该AuthTktAuthenticationPolicy用于身份验证。同样的问题:在将来使用 max_age 的身份验证 cookie 是一种不好的做法吗?

4

1 回答 1

3

请注意,超时仅适用于在此期间未联系服务器的用户。在 20 分钟内访问您的网站会刷新 cookie。

是的,允许更长的 cookie 超时存在安全风险;它会创建一个更长的窗口来破坏客户端计算机或尝试利用应用程序中的 XSS 漏洞。我仍然会对 cookie 设置限制

无论如何,我都会使用AuthTktAuthenticationPolicy来管理用户身份验证会话;它提供了对会话生命周期的更细粒度的控制(请参阅我的这个较旧的答案)。

您甚至可以编写一小段 javascript,当用户处于活动状态时(键盘和鼠标输入,例如每分钟一次)定期戳服务器以刷新该 cookie;关闭浏览器,会话在 20 分钟内自动消失。

于 2013-01-28T15:29:27.580 回答