2012-11-15 33 views
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。 任何幫助,將不勝感激。無效的記憶我記號(系列/記號)不匹配。暗示以前的cookie盜竊攻擊

回答

1

在等待某人發佈此問題的答案時,我想到了解決此問題的更好方法。默認情況下,PersistentTokenBasedRememberMeServices.processAutoLoginCookie()更新每個請求的標記。我的解決方案是重寫processAutoLoginCookie()的行爲並刪除了Cookie部分的更新。這解決了cookietheft異常,但這會爲攻擊者打開安全漏洞,因爲cookie不會爲每個請求更新。如果攻擊者能夠竊取cookie,他可以使用該cookie訪問受保護的站點。爲了防止這種情況發生,我正在考慮添加一個IP地址作爲cookie的一部分,並在cookie來自會話所有者的情況下驗證每個請求。我沒有實現IP驗證,但對我來說,這是解決此問題的更好方法。

我希望這也有助於你們中的一些人,我有同樣的問題。

0

修改您的web.xml,在錯誤頁面部分爲org.springframework.security.web.authentication.rememberme.CookieTheftException添加位置(例如/ signin)