Una correzione rapida contro CSRF consiste nel controllare l'intestazione HTTP Referer
e / o Origin
. Almeno uno di questi dovrebbe essere impostato e il dominio che contiene dovrebbe essere il tuo dominio (cioè la stessa origine).
Si noti che ciò interromperà i casi in cui si accede al sito da un segnalibro, si collega all'interno di una mail o simili poiché in tal caso non verrà inviato Referer
. Ma in nessun caso dovresti semplicemente accettare un Referer
vuoto (a meno che tu non abbia un'intestazione di Origin
non vuota) poiché questo è facile da creare per un utente malintenzionato.
Dovresti anche assicurarti che i tuoi controlli per il dominio siano corretti. Questo è, se il tuo sito è www.example.com
non devi accettare Referer
come http://www.example.com.attacker.com
o http://www.attacker.com/www.example.com
o http://www-example.com
.
Dovresti inoltre assicurarti che l'utente malintenzionato non possa utilizzare altre funzionalità (o bug) nella tua applicazione come trampolino per creare una richiesta personalizzata con carico utile malevolo ma la percentuale di origine% co_de prevista. Poiché Arminius è stato ben evidenziato in un commento, i reindirizzamenti aperti potrebbero essere tali trampolini. Pertanto, dovresti assicurarti che tutte le richieste al dominio abbiano una percentuale di origine uguale a% di co_de o che tutte le parti che potrebbero dover accettare un% di origine incrociata% co_de non possano essere abusate come trampolino.
Per ulteriori informazioni su questo metodo di protezione da CSRF e sui suoi potenziali problemi, vedere Verifica La stessa origine con intestazioni standard nel foglio Cheat di prevenzione tra i siti incrociati (CSRF) da OWASP.