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

Вид: 44609|Ответ: 1

[Источник] Детализированы антифальшивые теги ValidateAntiForgeryToken и AutoValidateAntiforgeryToken

[Скопировать ссылку]
Опубликовано 20.02.2021 19:57:29 | | | |
Чтобы предотвратить атаки CSRF, asp.net mvc предоставляет функцию антиподделок ValidateAntiForgeryToken, а в новой версии основного фреймворка asp.net Microsoft предоставляет функции AutoValidateAntiforgeryToken, а именно ValidateAntiForgeryToken и AutoValidateAntiforgeryToken В чём разница, подробно объясню в этой статье.

mvc ajax с AntiForgeryToken для предотвращения CSRF-атак
https://www.itsvse.com/thread-4207-1-1.html

ASP.NET CSRF-атаки на инкапсуляцию запроса Ajax
https://www.itsvse.com/thread-8077-1-1.html
Концепция CSRF

CSRF Cross-Site Request Forgery, как и XSS-атаки, крайне вредна, можно понять это так: злоумышленник крадёт вашу личность и отправляет вредоносный запрос от вашего имени, который полностью легитимен для сервера, но выполняет ожидаемые действиями, такие как отправка писем и сообщений от вашего имени, кража вашего аккаунта, добавление системных администраторов или даже покупка товаров, переводы виртуальной валюты и т.д. Web A — это сайт с уязвимостью CSRF, Web B — вредоносный сайт, созданный злоумышленником, а Пользователь C — легитимный пользователь Web A.


ASP.NET MVC против атак CSRF

На странице просмотра используйте @Html.AntiForgeryToken() для добавления тега, и когда пользователь обращается к странице, бэкенд автоматически сгенерирует скрытый html-код с этим тегом, следующим образом:


<input name="__RequestVerificationToken" type="скрытый" value="CfDJ8FBn4LzSYglJpE6Q0fWvZ8WDMTgwK49lDU1XGuP5-5j4JlSCML_IDOO3XDL5EOyI_mS2Ux7lLSfI7ASQnIIxo2ScEJvnABf9v51TUZl_iM2S63zuiPK4lcXRPa_KUUDbK-LS4HD16pJusFRppj-dEGc" />
Фоновой контроллер должен быть настроен [ValidateAntiForgeryToken] функция предотвращения подделки документов.

ValidateAntiForgeryToken и AutoValidateAntiforgeryToken отличаются

AutoValidateAntiforgeryTokenAuthorizationFilter наследует ValidateAntiforgeryTokenAuthorizationFilter, но переписывает в нём только метод ShouldValidate.

AutoValidateAntiforgeryToken — свойство, которое вызывает валидацию токенов против подделок для всех небезопасных HTTP-методов.HTTP-методы, кроме GET, HEAD, OPTIONS и TRACE, требуют токена против подделок。 Это можно применить как глобальный фильтр для запуска по умолчанию валидации токена по противоподделке приложения.

Вход по гиперссылке виден.

AutoValidateAntiforgeryTokenAttribute проверяет вызов AutoValidateAntiforgeryTokenAuthorizationFilter, который наследует от ValidateAntiforgeryTokenAuthorizationFilter,Метод ShouldValidate был переписан, возврат true означает, что его нужно проверить, а возврат false не будет проверен, как показано на рисунке ниже:

Проанализируйте исходный код:



AutoValidateAntiforgeryTokenAttribute позволяет глобально применять проверку токенов против подделок ко всем небезопасным методам, таким как POST, PUT, PATCH и DELETE. Так что вам не нужно добавлять свойство [ValidateAntiForgeryToken] к каждому действию, которое это требует.

Чтобы использовать его, добавьте следующий код в метод запуска класса ConfigureServices:


Если нужно игнорировать аутентификацию против подделок, вы можете добавить [IgnoreAntiforgeryTokenприписывают этому действию.

Иногда вам может придётся отмечать несколько запросов на контроллере, а некоторые запросы не требуют подделки, например, различные операции на основе GET. Существует несколько инструментов, которые помогут сделать процесс более удобным и комфортным. Первый — это свойство AutoValidateAntiforgeryToken. Он ведёт себя как свойство ValidateAntiForgeryToken. Однако он автоматически игнорирует действия, вызываемые методами поиска данных: GET, HEAD, OPTIONS и TRACE. Это позволяет быстро и легко добавить методы противоподделки ко всем методам, которые могут изменять данные, не влияя на способ их извлечения.

Следующий код является примером свойства AutoValidateAntiforgeryToken:


В этом примере обе обычные операции Index (GET) будут работать независимо от источника, тогда как операция Index с методом POST и операция RemoveUser как метод Delete потребуют от клиента использования токена против подделок.

Настройте соответствующую информацию

Многие могут задаться вопросом, можно ли заменить имя сгенерированного скрытого домена на их собственное, и можно ли изменить имя cookie на своё.

Ответ — да, давайте кратко продемонстрируем:

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


Примечание: главное отличие между asp.net ядром и asp.net заключается в том,Core поддерживает передачу параметров валидации путём запроса заголовка, а не формировать формы!

private const string AntiforgeryTokenFieldName = "__RequestVerificationToken";
private const string AntiforgeryTokenHeaderName = "RequestVerificationToken";


Вы можете посмотреть исходный код:Вход по гиперссылке виден.

Тестовый код:





Результат: Попытка получить доступ к методу test1 возвращает ошибку 400, доступ к методу test2 возвращает переданный параметр str, и вы видите, что функция AutoValidateAntiforgeryToken не перехватывает запрос GET.

(Конец)




Предыдущий:Fiddler заменяет ссылки, запрашивает перенаправления
Следующий:[поворот] Количество SQL SQL Server
 Хозяин| Опубликовано 08.07.2023 22:07:08 |
ASP.NET MVC запрашивает XSS Dangerous Content Validation (ValidateInput)
https://www.itsvse.com/thread-10624-1-1.html
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com