Alternativa ai token anti-CSRF per la richiesta AJAX (Same Origin Policy)

7

Sto lavorando su un sito Web PHP interamente basato su AJAX (tramite jQuery). È una singola pagina in cui tutte le richieste sono fatte da AJAX.

In relazione alla protezione contro CSRF ho riscontrato il problema di dover includere manualmente il token su ogni richiesta che faccio, il che è estremamente noioso e scomodo. Alla ricerca di una soluzione alternativa ai token, ho letto su SOP (Same Origin Policy) in relazione alle richieste AJAX. Se l'ho capito bene, xmlhttprequest non è consentito su domini diversi (a meno che non sia abilitato CORS, il che non è il caso).

Quindi, in questo caso, mi chiedo se verificare l'origine della richiesta (tramite HTTP_ORIGIN) e l'intestazione X-Requested-With (per garantire che la richiesta sia una richiesta AJAX), sarebbe sufficiente per impedire Attacchi CSRF. io volevo sapere se c'è qualche token davvero necessario considerando le condizioni di cui sopra.

Grazie mille per il tuo tempo.

    
posta cooper 12.12.2015 - 00:13
fonte

1 risposta

7

Sì, puoi utilizzare un'intestazione personalizzata come X-Requested-With per proteggere le richieste AJAX da CSRF.

Un'intestazione del cliente non è consentita nel dominio incrociato senza che CORS sia abilitato sul tuo server. L'intestazione Origin potrebbe anche essere utilizzata, tuttavia la logica per questo non è semplice .

Se si desidera aggiungere ulteriore sicurezza all'intestazione personalizzata nello spirito di difesa in profondità , si potrebbe aggiungere un token all'intestazione . Tuttavia, mentre stai dicendo che questo è il tedio che vuoi evitare, controllare un'intestazione personalizzata sarebbe sufficiente per escludere eventuali vulnerabilità future nei plugin del browser come Flash o Silverlight che consentono di impostare questa intestazione.

    
risposta data 14.12.2015 - 11:56
fonte

Leggi altre domande sui tag