Прерывистая ошибка брошена: "Необходимый токен анти-подделки не был поставлен или был недействителен".
Я иногда получаю эту ошибку при нормальном использовании, и я не нашел способ остановить ее, не удаляя атрибут, требующий токена, который я бы предпочел не делать.
Я получил эту ошибку во время моего собственного тестирования (но, по-видимому, случайным образом), и я знаю из моего ведения журнала, что и сами зарегистрированные пользователи.
Кто-нибудь знает, что может привести к тому, что система antiforgerytoken сломается (кроме реальной атаки), и как я могу это исправить, не открывая дыру безопасности в моих формах?
Спасибо!
Ответы
Ответ 1
Вот часть моего ответа на аналогичный вопрос:
Ключ машины и файлы cookie: эта проблема уродлива, проста в определении (вызывает исключения), но не очень интуитивно понятна. Файлы cookie проверки и токены кодируются и декодируются с использованием уникального "машинного ключа". Это означает, что если у вас есть ферма серверов или смените сервер, ваш файл cookie больше не будет действителен. Закрытие браузера устраняет проблему (поскольку файл cookie - это cookie сеанса). Тем не менее, некоторые люди оставляют свои окна браузера открытыми в фоновом режиме в течение длительного времени!
Решение заключается в установке "машинного ключа" в вашем файле конфигурации. Это позволит MVC использовать один и тот же ключ на всех серверах, гарантируя, что файл cookie будет дешифруемым везде.
Обратите внимание: если пользователь открывает окно браузера, даже ПОСЛЕ того, как вы меняете свой машинный ключ, они будут продолжать получать эти сообщения об ошибках! Они ДОЛЖНЫ закрыть окно (чтобы очистить сеансовый файл cookie), чтобы снова получить доступ к вашему веб-сайту.
Ответ 2
Чтобы убедиться, что имеет тот же токен ключа машины для всех запросов. Если у вас нет этого, и ваш пул приложений перезагружается, последующие POST со старыми файлами cookie вызывают эту ошибку.
Другая причина заключается в том, что у кого-то есть настройки конфиденциальности, и таким образом блокируются файлы cookie. Например, в Internet Explorer на вкладке "Конфиденциальность", если для параметров установлено значение "Высокий" или "Блокировать все файлы cookie", вы получите эту ошибку.
Ответ 3
Прочитайте здесь раздел об ограничениях
предотвратить подделку запроса на межсайтовый сайт
Ответ 4
Не уверен, что это поможет, но я обнаружил, что при использовании Internet Explorer я получал бы эту ошибку всякий раз, когда в поддомене был символ подчеркивания "_"... однако не в Firefox.
Ищите решение или рассуждения.
Ответ 5
Убедитесь, что ваш ~/Web.config имеет <machineKey> и вы устанавливаете ключ из этого раздела. Система анти-XSRF требует, чтобы она присутствовала.
Ответ 6
Как сказал mpen в комментарии к ответу, я вижу это все время, когда пользователи покидают страницу, сидящую там более 20 минут (время сеанса по умолчанию), и токен истекает.
Вы можете вызвать или принудительно выполнить эту ошибку (если вы пытаетесь проверить ее нахождение), открыв инструменты разработчика браузера и удалив скрытое поле __RequestVerificationToken:
<input name="__RequestVerificationToken" type="hidden" value="AqJL/+e9tGCSCXdurrXDRefVL/TAdOAG9Hjrx0oMPg6sVZY3xv099OSYlH1qI8uZyu4x2xFj9eiNVSH2BGsSfJCQAqzxfQtIKoHXNkkW2FJTkxzsNRkwZo1SJUzYGvcEJ/OJ0AouiUWh98qyIzgN2ZkKP7k=">