Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 44609|Відповідь: 1

[Джерело] Теги ValidateAntiForgeryToken та AutoValidateAntiforgeryToken для захисту від підробок детально пояснюються

[Копіювати посилання]
Опубліковано 20.02.2021 19:57:29 | | | |
Щоб запобігти атакам CSRF, asp.net mvc надає функцію ValidateAntiForgeryToken проти підробки, а в новій версії asp.net core фреймворку 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 Fakery, як і XSS-атаки, є надзвичайно шкідливим, це можна зрозуміти так: зловмисник краде вашу особистість і надсилає шкідливий запит від вашого імені, який є цілком легітимним для сервера, але виконує очікувану дією, наприклад, надсилає електронні листи та повідомлення від вашого імені, крадіжка акаунта, додавання системних адміністраторів або навіть купівля товарів, Віртуальні валютні перекази тощо. Web A — це вебсайт із вразливістю CSRF, Web B — шкідливий сайт, створений зловмисником, а User C — легітимний користувач Web A.


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

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


<вхідне ім'я="__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:


Якщо потрібно ігнорувати автентифікацію проти підробки, ви можете додати [Ігнорувати AntiforgeryTokenАтрибут дії.

Іноді вам може знадобитися тегувати кілька запитів на контролері, а деякі запити не потребують підробки, наприклад, різні операції на основі GET. Існує кілька інструментів, які допоможуть зробити процес зручнішим і комфортнішим. Перша — це властивість AutoValidateAntiforgeryToken. Він поводиться як властивість ValidateAntiForgeryToken. Однак він автоматично ігноруватиме дії, викликані методами, призначеними для отримання даних: GET, HEAD, OPTIONS та TRACE. Це дозволяє швидко та легко додавати методи протидії підробкам до всіх методів, які можуть змінювати дані, не впливаючи на спосіб їх отримання.

Наступний код є прикладом властивості AutoValidateAntiforgeryToken:


У цьому прикладі обидві звичайні операції Index (GET) працюватимуть незалежно від джерела, тоді як операції Index з методом POST і RemoveUser як метод Delete вимагатимуть від клієнта використання токена проти підробки.

Налаштуйте відповідну інформацію

Багато людей можуть замислюватися, чи можна замінити назву згенерованого прихованого домену на їхню власну, і чи можна змінити назву cookie на їхню власну.

Відповідь — так, давайте коротко продемонструємо:

У методі ConfigureServices Startup додайте наступне, щоб відповідно змінити ім'я за замовчуванням.


Примітка: Найбільша різниця між 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