Cross-Site Request Forgery (CSRF)
Impari come gli attacchi CSRF falsificano richieste autenticate e come i token CSRF e i cookie SameSite difendono da essi.
Cross-Site Request Forgery (CSRF) è una lezione Cyber Security Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Cyber Security Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Cyber Security Academy include 4 lezioni in totale.
Che cos'è CSRF?
Cross-Site Request Forgery (CSRF) induce il browser di un utente autenticato a inviare richieste non autorizzate a un'applicazione web. Il browser invia automaticamente i cookie insieme alle richieste, quindi senza misure aggiuntive il server non può distinguere le richieste legittime da quelle contraffatte.
Come funziona CSRF
Scenario:
- La vittima ha effettuato l'accesso a bank.com (cookie di sessione nel browser)
- La vittima visita la pagina dell'attaccante contenente:
<img src="https://bank.com/transfer?to=attacker&amount=1000"> - Il browser invia la richiesta GET allegando il cookie di bank.com
- La banca elabora il trasferimento
CSRF con richieste POST
Il CSRF tramite POST richiede un modulo:
<form action="https://bank.com/transfer" method="POST" id="f">
<input name="to" value="attacker">
<input name="amount" value="1000">
</form>
<script>document.getElementById("f").submit()</script>Token CSRF
La difesa principale consiste in un token CSRF: un valore casuale e segreto, specifico per sessione o per richiesta, incorporato nei moduli. Il server convalida il token per ogni richiesta che modifica lo stato. Un attaccante su un altro dominio non può leggere il token, in base alla politica della stessa origine.
Attributo SameSite dei cookie
SameSite=Strict: il cookie non viene mai inviato con richieste cross-site. SameSite=Lax: il cookie viene inviato con navigazioni di primo livello sicure, come i link, ma non con richieste POST provenienti da altri siti. I browser moderni utilizzano per impostazione predefinita Lax, riducendo significativamente il rischio di CSRF.
Pattern del doppio invio del cookie
Un'alternativa all'archiviazione del token lato server: imposti un cookie CSRF casuale e richieda che venga inviato anche come parametro della richiesta. Un attaccante non può leggere il cookie, poiché è soggetto alla stessa origine, quindi non può inserirne un valore corrispondente nei dati del modulo.
Intestazioni di richiesta personalizzate
Per le richieste AJAX, richiedere un'intestazione personalizzata, ad esempio X-Requested-With: XMLHttpRequest, offre protezione contro il CSRF perché i browser impediscono agli script cross-origin di impostare intestazioni arbitrarie: è CORS a imporlo.
Quando i token CSRF non bastano
I token CSRF non sono efficaci se:
- è presente XSS: l'attaccante può leggere il token tramite JavaScript
- il token viene divulgato nell'URL, tramite l'intestazione Referer
- il token è prevedibile o riutilizzato
- CORS è configurato in modo errato per consentire l'origine dell'attaccante
Test del CSRF
Procedura di test:
- Individui le richieste che modificano lo stato (POST, PUT, DELETE)
- Rimuova o modifichi il token CSRF e invii nuovamente la richiesta
- Crei un invio di modulo cross-origin e verifichi se ha esito positivo
- Verifichi l'attributo SameSite sui cookie di sessione
CSRF nelle API
Le API REST che utilizzano JSON sono spesso esenti dal CSRF se:
- richiedono
Content-Type: application/json(i moduli HTML non possono impostarlo) - utilizzano un'autenticazione basata su token (intestazione Authorization, non cookie)
Tuttavia, le API che accettano cookie devono comunque implementare la protezione CSRF.
Scenario moderno del CSRF
Poiché SameSite=Lax è l'impostazione predefinita in Chrome, Firefox e Safari, molti attacchi CSRF tradizionali vengono bloccati. Tuttavia, gli attacchi ai sottodomini e determinati schemi di navigazione possono ancora aggirare Lax. Combini SameSite con i token CSRF per una difesa solida.
Verifica rapida: CSRF
Qual è la difesa principale contro gli attacchi CSRF nelle applicazioni web?
Riepilogo della lezione
Il CSRF sfrutta l'aggiunta automatica dei cookie da parte del browser per contraffare richieste autenticate provenienti da siti dannosi. Difesa principale: token CSRF convalidati lato server. Difesa secondaria: attributo cookie SameSite=Strict/Lax. Le API che utilizzano l'autenticazione tramite token nelle intestazioni, e non tramite cookie, sono naturalmente resistenti al CSRF. Combini le difese: l'XSS può aggirare i token CSRF, se presenti.
Domande Frequenti
La lezione «Cross-Site Request Forgery (CSRF)» è gratuita?
Sì — il testo completo di «Cross-Site Request Forgery (CSRF)» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Cyber Security Academy, passa a CoddyKit PRO. Il corso Cyber Security Academy include 4 lezioni in totale.
Cosa imparerò in «Cross-Site Request Forgery (CSRF)»?
Impari come gli attacchi CSRF falsificano richieste autenticate e come i token CSRF e i cookie SameSite difendono da essi. Eserciti Cyber Security Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Cyber Security Academy?
Non è richiesta alcuna esperienza precedente. Cyber Security Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «Cross-Site Request Forgery (CSRF)»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Cyber Security Academy?
Sì. Ogni lezione Cyber Security Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- SQL injection: come e perché funziona
- Cross-Site Scripting (XSS)
- Cross-Site Request Forgery (CSRF)
- Configurazioni errate ed esposizione dei servizi