CSRF o Cross-Site Request Forgery è una vulnerabilità del sito Web in cui un utente malintenzionato può causare l'esecuzione di un'azione nella sessione di una vittima su un altro sito Web. Una delle cose che rende CSRF così rischioso è che non richiede nemmeno l'interazione dell'utente, tutto ciò che serve è che la vittima visualizzi una pagina web con l'exploit in essa.
Suggerimento: CSRF è generalmente pronunciato lettera per lettera o come "spuma del mare".
Come funziona un attacco CSRF?
L'attacco coinvolge l'attaccante che crea un sito Web che dispone di un metodo per effettuare una richiesta su un altro sito Web. Ciò potrebbe richiedere l'interazione dell'utente, ad esempio fargli premere un pulsante, ma potrebbe anche essere senza interazione. In JavaScript ci sono modi per far sì che un'azione avvenga automaticamente. Ad esempio, un'immagine zero per zero pixel non sarà visibile all'utente ma può essere configurata in modo che il suo "src" faccia una richiesta a un altro sito web.
JavaScript è un linguaggio lato client, ciò significa che il codice JavaScript viene eseguito nel browser anziché sul server web. Grazie a questo fatto, il computer che effettua la richiesta CSRF è in realtà quello della vittima. Sfortunatamente, questo significa che la richiesta viene effettuata con tutti i permessi di cui dispone l'utente. Una volta che il sito Web attaccante ha indotto la vittima a effettuare la richiesta CSRF con l'inganno, la richiesta è essenzialmente indistinguibile dall'utente che effettua la richiesta normalmente.
CSRF è un esempio di "attacco di vice confuso" contro il browser Web poiché il browser viene indotto a utilizzare le sue autorizzazioni da un utente malintenzionato senza tali privilegi. Queste autorizzazioni sono la tua sessione e i token di autenticazione per il sito Web di destinazione. Il tuo browser include automaticamente questi dettagli in qualsiasi richiesta effettuata.
Gli attacchi CSRF sono alquanto complessi da organizzare. Prima di tutto, il sito Web di destinazione deve avere un modulo o un URL con effetti collaterali come l'eliminazione del tuo account. L'attaccante deve quindi creare una richiesta per eseguire l'azione desiderata. Infine, l'autore dell'attacco deve convincere la vittima a caricare una pagina Web contenente l'exploit mentre è connesso al sito Web di destinazione.
Per prevenire problemi CSRF, la cosa migliore che puoi fare è includere un token CSRF. Un token CSRF è una stringa generata casualmente che viene impostata come cookie, il valore deve essere incluso in ogni risposta insieme a un'intestazione della richiesta che include il valore. Sebbene un attacco CSRF possa includere il cookie, non è possibile determinare il valore del token CSRF per impostare l'intestazione e quindi l'attacco verrà rifiutato.