CSRF nelle chiamate API da Javascript sul browser

2

Ho notato dei token usati nelle presentazioni dei moduli per prevenire gli attacchi CSRF, anche se nel 2016 molte persone si stanno spostando verso il frontend & JS di JS. backend API restful. Sono perplesso, con questo approccio non c'è più bisogno di token CSRF?

Penso che CSRF sia un problema per l'invio di moduli poiché tutti i dati della sessione vengono inviati con ogni richiesta . Ma AJAX è diverso? Cioè tutti i cookie (dati di sessione) non vengono inviati?

Puoi presupporre che la mia API sia protetta da CORS (su TLS), ad esempio Access-Control-Allow-Origin è impostato solo per il sito da cui mi aspetto che i dati vengano raccolti.

Quindi quello che sto chiedendo è: CORS & un'API AJAX chiama il modo per evitare di generare token nel mio front-end?

    
posta hendry 03.03.2016 - 03:08
fonte

1 risposta

1

IIUC solo le chiamate Ajax possono impostare intestazioni personalizzate e quelle sono limitate al dominio.

Btw CORS non è un tipo di protezione, è lì per consentire una minore protezione (ad esempio consente di effettuare richieste tra domini)

Quindi, semplicemente aggiungendo X-CSRF-CHECK: 1 alle chiamate AJAX dell'applicazione e avendo il tuo back-end come PHP check per $_SERVER['HTTP_X_CSRF_CHECK'] , non devi generare token casuali per impedire attacchi CSRF poiché altri siti web non possono impostare quelle intestazioni. Questo è fantastico dato che ora le tue forme possono essere più facilmente memorizzate nella cache.

Un utente malintenzionato che può creare un'intestazione non avrà i dati della sessione poiché non saranno nella sessione del browser con il server.

Un utente malintenzionato CSRF che non riesce a creare un'intestazione, sebbene possa utilizzare i dati della sessione, non riuscirà con l'intestazione X_CSRF_CHECK' sul back-end.

    
risposta data 04.03.2016 - 02:53
fonte

Leggi altre domande sui tag