Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 44609|Risposta: 1

[Fonte] I tag anti-contraffazione ValidateAntiForgeryToken e AutoValidateAntiforgeryToken sono spiegati in dettaglio

[Copiato link]
Pubblicato su 20/02/2021 19:57:29 | | | |
Per prevenire attacchi CSRF, asp.net mvc fornisce la funzione anti-contraffazione ValidateAntiForgeryToken e, nella nuova versione del framework base asp.net, Microsoft fornisce la funzione AutoValidateAntiforgeryToken, in particolare ValidateAntiForgeryToken e AutoValidateAntiforgeryToken Qual è la differenza, questo articolo la spiegherà in dettaglio.

MVC Ajax con AntiForgeryToken per prevenire attacchi CSRF
https://www.itsvse.com/thread-4207-1-1.html

ASP.NET attacco CSRF Incapsulamento delle richieste Ajax
https://www.itsvse.com/thread-8077-1-1.html
Concetto CSRF

La falsificazione di richieste cross-site CSRF, come gli attacchi XSS, è estremamente dannosa, puoi capirla così: l'attaccante ruba la tua identità e invia una richiesta dannosa a tuo nome, che è completamente legittima per il server, ma completa un'azione che l'attaccante si aspetta, come inviare email e messaggi a tuo nome, rubare il tuo account, aggiungere amministratori di sistema o persino acquistare beni, trasferimenti di valuta virtuale, ecc. Web A è un sito web con una vulnerabilità CSRF, Web B è un sito web malevolo creato da un attaccante e l'Utente C è un utente legittimo di Web A.


ASP.NET MVC contro attacchi CSRF

Nella pagina di visualizzazione, usa @Html.AntiForgeryToken() per aggiungere un tag e, quando l'utente accede alla pagina, il backend genera automaticamente un codice html nascosto con il tag, come segue:


<nome input="__RequestVerificationToken" type="hidden" value="CfDJ8FBn4LzSYglJpE6Q0fWvZ8WDMTgwK49lDU1XGuP5-5j4JlSCML_IDOO3XDL5EOyI_mS2Ux7lLSfI7ASQnIIxo2ScEJvnABf9v51TUZl_iM2S63zuiPK4lcXRPa_KUUDbK-LS4HD16pJusFRppj-dEGc" />
Il controller in background deve essere impostato [ValidateAntiForgeryToken] per prevenire la falsificazione di moduli inviati.

ValidateAntiForgeryToken e AutoValidateAntiforgeryToken sono differenze

AutoValidateAntiforgeryTokenAuthorizationFilter eredita il ValidateAntiforgeryTokenAuthorizationFilter, ma riscrive solo il metodo ShouldValide.

Proprietà AutoValidateAntiforgeryToken che causa la validazione dei token anti-contrafazione per tutti i metodi HTTP non sicuri.I metodi HTTP diversi da GET, HEAD, OPTIONS e TRACE richiedono tutti un token anti-contraffazione。 Questo può essere applicato come filtro globale per attivare di default la validazione del token anti-contraffazione dell'applicazione.

Il login del link ipertestuale è visibile.

AutoValidateAntiforgeryTokenAttribute valida la chiamata a AutoValidateAntiforgeryTokenAuthorizationFilter, che eredita da ValidateAntiforgeryTokenAuthorizationFilter,Il metodo ShouldValidate è stato riscritto, restituire true significa che deve essere validato, e il ritorno di false non sarà convalidato, come mostrato nella figura sottostante:

Analizza il codice sorgente:



AutoValidateAntiforgeryTokenAttribute consente di applicare globalmente la validazione dei token anti-contraffattione a tutti i metodi insicuri, come POST, PUT, PATCH e DELETE. Quindi non è necessario aggiungere la proprietà [ValidateAntiForgeryToken] a ogni azione che la richiede.

Per utilizzarlo, aggiungi il seguente codice al metodo Startup della classe ConfigureServices:


Se devi ignorare l'autenticazione anti-contraffazione, puoi aggiungere [IgnoraAntifalsificazioneTokenattribuisce all'azione.

A volte potresti dover etichettare più richieste su un controller mentre alcune richieste non devono essere falsificate, come varie operazioni basate su GET. Ci sono diversi strumenti che puoi usare per rendere il processo più comodo e confortevole. La prima è la proprietà AutoValidateAntiforgeryToken. Si comporta come la proprietà ValidateAntiForgeryToken. Tuttavia, ignorerà automaticamente le azioni chiamate dai metodi progettati per il recupero dati: GET, HEAD, OPTIONS e TRACE. Questo ti permette di aggiungere rapidamente e facilmente metodi anti-contraffattione a tutti i metodi che possono modificare i dati senza influenzare il modo in cui vengono recuperati.

Il seguente codice è un esempio della proprietà AutoValidateAntiforgeryToken:


In questo esempio, entrambe le normali operazioni Index (GET) funzioneranno indipendentemente dalla fonte, mentre sia l'operazione Index con il metodo POST sia l'operazione RemoveUser come metodo Delete richiederanno al client di utilizzare un token anti-counterfing.

Personalizza le informazioni rilevanti

Molte persone potrebbero chiedersi se il nome del dominio nascosto generato possa essere sostituito con il proprio, e se il nome del cookie possa essere cambiato con il proprio.

La risposta è sì, dimostriamo brevemente:

Nel metodo ConfigureServices di Startup, aggiungi il seguente per modificare di conseguenza il nome predefinito.


Nota: La differenza più grande tra asp.net core e asp.net è,Core supporta il passaggio dei parametri di validazione richiedendo un'intestazione, non per formare moduli!

stringa const privata AntiforgeryTokenFieldName = "__RequestVerificationToken";
stringa privata const AntiforgeryTokenHeaderName = "RequestVerificationToken";


Puoi visualizzare il codice sorgente:Il login del link ipertestuale è visibile.

Codice di test:





Risultato: Provare ad accedere al metodo test1 restituisce un errore 400, accedere al metodo test2 restituisce il parametro str che abbiamo superato, e puoi vedere che la funzione AutoValidateAntiforgeryToken non intercetta la richiesta GET.

(Fine)




Precedente:Fiddler sostituisce i link, richiede reindirizzamenti
Prossimo:[gira] SQL Server SQL Count
 Padrone di casa| Pubblicato su 08/07/2023 22:07:08 |
ASP.NET MVC richiede XSS Dangerous Content Validation (ValidateInput)
https://www.itsvse.com/thread-10624-1-1.html
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com