Vai al contenuto

Cross-site request forgery (CSRF)

CSRF sfrutta una sessione aperta per una richiesta indesiderata. Il cookie di sessione da solo non dimostra che la persona volesse eseguire l’azione.

Noto anche comeCSRFXSRF
Sicurezza informatica

Il cross-site request forgery, o CSRF, detto anche XSRF, è un attacco in cui un altro sito induce il browser a inviare una richiesta indesiderata a un’applicazione bersaglio. Se il browser include automaticamente credenziali valide e manca una protezione adeguata, l’applicazione può trattare la richiesta come un’istruzione della persona che ha effettuato l’accesso.

Una modifica nel portale di progetto

Un portale di progetto fittizio permette di cambiare l’indirizzo delle notifiche nel campo notificationEmail. Una persona ha effettuato l’accesso e visita anche un’altra pagina. Quest’ultima tenta di attivare la modifica. L’invio del cookie di sessione dipende, fra l’altro, dalle regole sui cookie del browser.

Verificare un cookie di sessione valido stabilisce a quale sessione appartiene la richiesta. Non dimostra che la persona volesse modificare l’indirizzo. Anche il solo uso di POST non impedisce l’attacco.

Proteggere le richieste che modificano lo stato

Per un modulo, il framework può fornire un token CSRF imprevedibile legato alla sessione. Il server verifica questo valore aggiuntivo prima della modifica. La protezione deve essere effettivamente usata per le richieste interessate.

MDN descrive anche controlli basati sui metadati Fetch, ossia informazioni del browser sul contesto della richiesta, e altri metodi adatti al tipo di richiesta. L’attributo del cookie SameSite è un ulteriore livello di protezione. Stesso sito e stessa origine (protocollo, nome host e porta) non sono equivalenti; sottodomini diversi possono appartenere allo stesso sito. Un token CSRF valido non sostituisce inoltre la verifica che la persona autenticata sia autorizzata a cambiare l’indirizzo.

Fonti