更改会话cookie超时是否存在安全风险?
假设我有一个金字塔应用程序,在这个应用中,我使用 UnencryptedCookieSessionFactoryConfig
来处理csrf令牌和使用 SessionAuthenticationPolicy
进行身份验证。默认情况下,session cookie的超时时间是1200秒,也就是20分钟,这意味着用户在20分钟后会被断开连接,这让人很烦。
我曾考虑过延长这个超时时间,甚至干脆去掉它,设置一个最大有效期,让它在浏览器中存活更久,但我想这个超时时间肯定是有原因的。
那么,拥有一个长时间有效的session cookie会有安全风险吗?这算不算一种不好的做法呢?
我猜测csrf令牌应该是短期有效的。在这种情况下,我应该使用 AuthTktAuthenticationPolicy
来进行身份验证。那同样的问题:如果身份验证的cookie设置了一个很长的最大有效期,这算不算不好的做法呢?
1 个回答
3
注意,超时设置只适用于在这段时间内没有与服务器联系的用户。如果用户在20分钟内访问了你的网站,cookie就会被刷新。
是的,允许更长的cookie超时会有安全风险,因为这会给黑客更多的时间去攻击用户的电脑,或者利用你应用中的XSS漏洞。所以我还是建议给cookie设置一个时间限制。
我会使用AuthTktAuthenticationPolicy
来管理用户的登录会话,这样可以更细致地控制会话的有效时间(可以参考我之前的回答)。
你甚至可以写一小段javascript代码,让它在用户活跃时定期与服务器联系(比如每分钟一次,检测键盘和鼠标的输入),这样可以刷新cookie;如果关闭浏览器,会话会在20分钟内自动消失。