Временная ошибка: «Требуемый токен защиты от подделки не был предоставлен или был недействительным». - PullRequest
12 голосов
/ 07 мая 2010

Иногда я получаю эту ошибку при обычном использовании, и я не нашел способа остановить ее, не удаляя атрибут, который требует токен, чего я бы предпочел не делать.

Я получил эту ошибку во время моего собственного тестирования (но, по-видимому, случайно), и я знаю из своей регистрации, что фактические зарегистрированные пользователи также получают ее.

Кто-нибудь знает, что может привести к сбою системы antiforgerytoken (кроме реальной атаки), и как я могу это исправить, не открывая дыру в безопасности в моих формах?

Спасибо!

Ответы [ 6 ]

8 голосов
/ 08 ноября 2011

Вот часть моего ответа на аналогичный вопрос :

Ключ компьютера и файлы cookie : эта проблема уродлива, ее легко обнаружить (вызывает исключения), но она не очень понятна. Файлы cookie и токены проверки кодируются и декодируются с использованием уникального «машинного ключа». Это означает, что если у вас есть ферма серверов или вы изменили свой сервер, ваш файл cookie больше не будет действительным. Закрытие вашего браузера решает проблему (потому что cookie - это cookie сессии). Однако некоторые люди оставляют свои окна браузера открытыми в течение длительного времени!
Решением является установка «машинного ключа» в вашем конфигурационном файле. Это скажет MVC использовать один и тот же ключ на всех серверах, гарантируя, что cookie будет дешифруемым везде.

Обратите внимание: если пользователь держит какое-либо окно браузера открытым, даже ПОСЛЕ того, как вы измените машинную клавишу , они продолжат получать эти сообщения об ошибках! Они ДОЛЖНЫ закрыть окно (чтобы очистить куки-файл сессии), чтобы снова зайти на ваш сайт.

4 голосов
/ 08 ноября 2011

Необходимо убедиться, что имеет одинаковый токен ключа машины для всех запросов .Если у вас этого нет и ваш пул приложений перезагружается, последующие сообщения POST со старыми файлами cookie вызывают эту ошибку.

Другая причина - это когда кто-то имеет слишком высокие настройки конфиденциальности и таким образом блокирует файлы cookie.Например, в Internet Explorer на вкладке «Конфиденциальность», если для параметров задано значение «Высокий уровень» или «Блокировать все файлы cookie», вы получите эту ошибку.

1 голос
/ 04 мая 2011

Не уверен, поможет ли это, но я обнаружил, что при использовании Internet Explorer я получаю эту ошибку всякий раз, когда в поддомене есть подчеркивание '_' ... но не в Firefox.

Все еще ищите решение или аргументацию.

1 голос
/ 07 мая 2010

Прочитайте раздел здесь об ограничениях

предотвратить подделку межсайтовых запросов

0 голосов
/ 19 мая 2016

Как сказал mpen в комментарии к ответу, я вижу это все время, когда пользователи покидают страницу, сидя там более 20 минут (время сеанса по умолчанию), и токен истекает.

Вы можете вызвать или вызвать эту ошибку (если вы пытаетесь проверить ее перехват), открыв инструменты разработчика вашего браузера и удалив скрытое поле __RequestVerificationToken:

<input name="__RequestVerificationToken" type="hidden" value="AqJL/+e9tGCSCXdurrXDRefVL/TAdOAG9Hjrx0oMPg6sVZY3xv099OSYlH1qI8uZyu4x2xFj9eiNVSH2BGsSfJCQAqzxfQtIKoHXNkkW2FJTkxzsNRkwZo1SJUzYGvcEJ/OJ0AouiUWh98qyIzgN2ZkKP7k=">
0 голосов
/ 07 мая 2010

Убедитесь, что в вашем ~ / Web.config есть раздел и что вы устанавливаете ключ из этого раздела. Система анти-XSRF требует, чтобы это присутствовало.

...