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メソッドが 2 回呼び出されることです。メソッド自体の動作は正しいようです。たとえば、データベースのトークンを更新し、クライアントの Cookie を更新します。これに関する助けをいただければ幸いです。

4

2 に答える 2

1

誰かがこの質問への回答を投稿するのを待っている間、私はこの問題に対するより良い解決策を考えました。デフォルトでは、PersistentTokenBasedRememberMeServices.processAutoLoginCookie()は、リクエストごとにトークンを更新します。これに対する私の解決策は、processAutoLoginCookie()の動作をオーバーライドし、Cookie部分の更新を削除することです。これにより、Cookieの盗難の例外が解決されますが、Cookieがすべてのリクエストに対して更新されるわけではないため、攻撃者にセキュリティホールが開かれます。攻撃者がCookieを盗むことができた場合、攻撃者はそのCookieを使用して保護されたサイトにアクセスできます。これを防ぐために、Cookieの一部としてIPアドレスを追加し、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 に答える