假设我有一个金字塔应用程序,我将UnencryptedCookieSessionFactoryConfig
用于csrf令牌并使用SessionAuthenticationPolicy
进行身份验证。会话cookie的默认超时为1200,这意味着我的用户在20分钟后断开连接,这非常烦人。
我很想提高超时甚至删除它,并设置一个max_age使其在浏览器中存活,但我认为暂停是有充分理由的。
使用长期会话cookie是否存在安全风险?这被认为是不好的做法吗?
我的猜测是csrf令牌应该是短暂的。在这种情况下,我应该使用AuthTktAuthenticationPolicy
进行身份验证。同样的问题:是一个认证cookie,其中max_age将来是一个不好的做法吗?
答案 0 :(得分:2)
请注意,超时仅适用于那段时间未联系服务器的用户。在20分钟内访问您的网站会刷新cookie。
是的,允许更长的Cookie超时存在安全风险;它会创建一个更长的窗口来破坏客户端计算机或尝试利用应用程序中的XSS漏洞。我仍然会在Cookie上设置 限制。
我仍然使用AuthTktAuthenticationPolicy
来管理用户身份验证会话;它提供了对会话生命周期的更精细控制(请参阅此older answer of mine)。
你甚至可以编写一小段javascript,当用户处于活动状态时(键盘和鼠标输入,戳戳,比如每分钟一次)定期戳服务器来刷新该cookie;关闭浏览器,会话在20分钟内自动消失。