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

Вид: 37886|Ответ: 4

[ASP.NET] mvc ajax с AntiForgeryToken для предотвращения CSRF-атак

[Скопировать ссылку]
Опубликовано 02.11.2017 10:06:29 | | | |
Часто наблюдается, что данные ajax post на сервере проекта не помечаются тегами против подделок, что вызывает CSRF-атаки, и очень легко добавить метки против подделок в Asp.net MVC, добавив в форму Html.AntiForgeryToken().
Html.AntiForgeryToken() генерирует пару зашифрованных строк, которые хранятся в файлах cookie и input. Мы также добавляем AntiForgeryToken в ajax-пост
Html.AntiForgeryToken() в MVC — это мера для предотвращения атак на межсайтовые запросы (CSRF: Cross-site request forgery), которая отличается от XSS (XSS также известна как CSS: Cross-Site-Script). XSS обычно использует доверенных пользователей сайта для введения вредоносного скрипта в сеть с целью атаки. CSRF, напротив, — это псевдодоверенный пользователь, атакующий сайт.
Сначала рассмотрим код следующим образом:

При запуске сгенерированный html-код выглядит так:



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



Код в контроллере следующий:

Нам нужно добавить функцию ValidateAntiForgeryToken к каждому контроллеру, если пользователь не привезёт AntiForgeryToken, мы можем вернуть ему дружелюбный запрос, следующим образом:







Предыдущий:asp.net mvc Binding Attribute feature binding
Следующий:Одно из сравнений между CMMI и Agile: главное различие между ними
 Хозяин| Опубликовано 02.11.2017 11:05:37 |
Для этого метода необходимо настроить функцию, и вы не можете использовать стандартную функцию ValidateAntiForgeryToken

По умолчанию можно взять значение из формы и оценить его



Я инкапсулировал пост-метод с помощью jQuery с проверкой против подделок, и код выглядит следующим образом:



 Хозяин| Опубликовано 02.11.2017 11:17:36 |
IsAjaxRequest для определения, является ли это ajax-запросом

По сути, IsAjaxRequest() определяет, есть ли поле X-Requested-With в заголовке и является ли оно XMLHttpRequest

Смотреть документацию бесполезно, всё зависит от исходного кода.
 Хозяин| Опубликовано 20.02.2021 19:22:26 |
ASP.NET CSRF-атаки на инкапсуляцию запроса Ajax
https://www.itsvse.com/thread-8077-1-1.html
Опубликовано 09.12.2021 18:37:56 |
testtesttesttest
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com