Недопустимое несоответствие токена «запомнить меня» (серия/токен). Подразумевает предыдущую атаку кражи файлов cookie

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 вызывается дважды. Поведение самого метода вроде правильное, например, обновить токен в базе и обновить куки в клиенте. Любая помощь в этом будет оценена по достоинству.


person Warner    schedule 15.11.2012    source источник


Ответы (2)


Ожидая, пока кто-нибудь опубликует ответ на этот вопрос, я подумал о лучшем решении этой проблемы. По умолчанию PersistentTokenBasedRememberMeServices.processAutoLoginCookie() обновляет маркер для каждого запроса. Мое решение состоит в том, чтобы переопределить поведение processAutoLoginCookie() и удалить обновление части cookie. Это устраняет исключение cookietheft, но это открывает брешь в безопасности для злоумышленника, поскольку файл cookie не обновляется для каждого запроса. Если злоумышленник может украсть файл cookie, он может использовать этот файл cookie для доступа к защищенному сайту. Чтобы этого не произошло, я думаю добавить IP-адрес как часть файла cookie и проверить каждый запрос, если файл cookie исходит от владельца сеанса. Я не реализовал проверку IP, но для меня это лучший способ решить эту проблему.

Я надеюсь, что это также поможет некоторым из вас, имеющим ту же проблему, что и я.

person Warner    schedule 15.11.2012

измените свой web.xml, в разделах страницы ошибок добавьте местоположение (например, /signin) для org.springframework.security.web.authentication.rememberme.CookieTheftException

person Jerry Chan    schedule 16.12.2013