4
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方法被调用了两次。方法本身的行为似乎是正确的,例如,更新数据库中的令牌和更新客户端中的 cookie。对此的任何帮助将不胜感激。

4

2 回答 2

1

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

我希望这也对你们中的一些人有同样的问题有帮助。

于 2012-11-15T17:22:37.577 回答
-1

修改您的 web.xml,在错误页面部分,为 org.springframework.security.web.authentication.rememberme.CookieTheftException 添加位置(例如 /signin)

于 2013-12-16T06:13:26.763 回答