Cos'è il CSRF?
CSRF (Cross-site request forgery), noto anche come attacco con un clic/session riding, abbreviazione cinese: CSRF/XSRF. CSRF (Cross Site Request Forgery) è un metodo di attacco di rete che nel 2007 è stato inserito tra i 20 principali rischi di sicurezza su Internet. Altri rischi di sicurezza, come l'iniezione di script SQL e gli attacchi cross-site domain script, sono diventati ben noti negli ultimi anni, e molti siti web si sono difesi da essi. Tuttavia, CSRF è ancora un concetto estraneo alla maggior parte delle persone. Anche il Gmail più famoso aveva una vulnerabilità CSRF alla fine del 2007, che è stata hackerata e ha causato enormi perdite agli utenti di Gmail.
Cosa può fare il CSRF?
Puoi capire gli attacchi CSRF così: un attaccante ha rubato la tua identità e inviato richieste malevole a tuo nome. CSRF può fare cose come inviare email, inviare messaggi, rubare il tuo account o persino acquistare beni e trasferire valuta virtuale per tuo conto...... I problemi causati includono: perdite di privacy personale e sicurezza della proprietà.
ASP.NET marchio anti-contraffazione MVC AntiForgeryToken
In ASP.NET MVC, i token form e i token cookie vengono generati automaticamente di default ogni volta che @Html.AntiForgeryToken() viene utilizzato nella pagina di visualizzazione. Tuttavia, se vogliamo ottenere un recupero manuale in background, dobbiamo usare la classe System.Web.Helpers.AntiForgery, e gli amici interessati a visualizzare il codice sorgente scopriranno che, in effetti, il metodo di chiamata interna di @Html.AntiForgeryToken() è lo stesso della classe AntiForgery.
Viene principalmente utilizzato per ottenere il corrispondente form e cookie token tramite due metodi statici: AntiForgery.GetHtml() o AntiForgery.GetTokens(stringa oldCookieToken, outstringa newCookieToken, outstringa formToken). Tuttavia, va notato che una volta chiamato il metodo GetHtml, il token cookie corrispondente verrà generato automaticamente, e poi un pezzo di codice HTML con il campo nascosto del valore del token di forma verrà restituito direttamente, e il valore restituito sarà in questa forma:
<input name="__RequestVerificationToken" type="hidden" value="8_nUk_3z0svQr9qcvRBi9SWMZ2-SYmuy9kRe9OgRobGULkb2Z4JZxRZFhR0ndeoy9hmDLDru7MFk-W4xrnL5z5T6VbkfXK7fyRk-egQBGm41"> Il nome del campo nascosto è generalmente fissato su "__RequestVerificationToken", e il valore è un token di sicurezza criptato. Questo campo nascosto viene solitamente inserito nel modulo da inviare e l'ultimo invio viene verificato rispetto al token del cookie.
Se usi il metodo GetTokens, puoi ottenere il modulo criptato e il token cookie dopo aver inserito i parametri corrispondenti, ma qui devi memorizzare i valori corrispondenti da solo.
Successivamente, presenteremo il metodo di aggiornamento manuale di AntiForgeryToken, principalmente tramite AJAX.
Codice pacchetto:
Codice di test:
Abbiamo scoperto che quando si invia una richiesta ajax, i parametri __RequestVerificationToken vengono automaticamente inclusi, come mostrato nella figura qui sotto:
|