无效的记住我令牌(系列/令牌)不匹配。意味着以前的cookie盗窃攻击

时间:2012-11-15 08:25:39

标签: java spring security spring-security remember-me

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。 任何有关这方面的帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

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

我希望这也有助于你们中的一些人遇到同样的问题。

答案 1 :(得分:-1)

修改你的web.xml,在错误页面部分,为org.springframework.security.web.authentication.rememberme.CookieTheftException

添加位置(例如/ signin)