processAutoLoginCookie

processAutoLoginCookie

org.springframework.security.web.authentication.rememberme.CookieTheftException: Invalid remember-me token (Series/token) mismatch. Implies previous cookie theft attack.
    at org.springframework.security.web.authentication.rememberme.PersistentTokenBasedRememberMeServices.processAutoLoginCookie(PersistentTokenBasedRememberMeServices.java:102)
    at org.springframework.security.web.authentication.rememberme.AbstractRememberMeServices.autoLogin(AbstractRememberMeServices.java:115)

我注意到的是,processAutoLoginCookie方法被调用了两次。该方法本身的行为似乎是正确的,例如,更新数据库中的 token 并更新客户端中的cookie。
任何帮助,将不胜感激。

最佳答案

在等待有人发布该问题的答案时,我想到了一个更好的解决方案。默认情况下,PersistentTokenBasedRememberMeServices.processAutoLoginCookie()为每个请求更新 token 。我对此的解决方案是重写processAutoLoginCookie()的行为并删除co​​okie部分的更新。这解决了cookietheft异常,但这将为攻击者打开一个安全漏洞,因为cookie不会针对每个请求进行更新。如果攻击者能够窃取该cookie,则可以使用该cookie访问受保护的站点。为了防止这种情况发生,我正在考虑将一个IP地址添加到cookie中,并在cookie来自会话所有者的情况下验证每个请求。我尚未实现IP验证,但是对我来说,这是解决此问题的更好方法。

我希望这也能帮助某些人遇到与我同样的问题。

09-10 15:00