Richiesta di token CSRF tramite AJAX per JavaScript webapp [duplicato]

1

Ho un'applicazione web JavaScript che comunica con un'API su un sottodominio diverso. HTML e Javascript sono tutti ospitati in S3.

Un token CSRF convenzionale viene inserito nel corpo della pagina HTML e utilizzato da form o letto da JavaScript; ma poiché l'HTML è staticamente ospitato, questo non è possibile nel mio caso.

È sicuro richiedere un token CSRF dal server durante l'avvio dell'applicazione con una richiesta AJAX? Il token risultante potrebbe quindi essere allegato come intestazione a tutte le future richieste all'API.

Esiste una soluzione migliore per la protezione dagli attacchi CSRF nella mia architettura?

    
posta Steve 28.06.2017 - 14:35
fonte

2 risposte

0

Sì, purché osserviate le consuete precauzioni; Richiedilo una volta all'inizio della sessione, quindi tienilo all'interno dell'applicazione, proteggi la richiesta api con SSL, assicurati che il token sia stato creato correttamente (random casuali o crittografati, ecc.)

Sono disponibili ulteriori informazioni sulla pagina OWASP sulla prevenzione CSRF qui: link

    
risposta data 28.06.2017 - 17:34
fonte
0

In realtà non hai bisogno di token, puoi farlo usando un'intestazione personalizzata.

So che il CSRF-Token è importante perché sono un cacciatore di taglie bug ma puoi invece affidarti alla sicurezza del browser. Ho visto molti casi in cui il token CSRF è trapelato dal sottodominio.

Ad esempio, quando invii i dati da a.mysite.com includi questa intestazione:

Ok-Request: 1 

Dato che invii i dati al dominio incrociato, devi configurare la tua intestazione HTTP Proprio come questo (per b.mysite.com):

Access-Control-Allow-Headers: x-requested-with, content-type, accept, origin, Ok-Request 
Access-Control-Allow-Methods: GET, POST, PUT, OPTIONS
Access-Control-Allow-Origin: a.mysite.com
Access-Control-Allow-Credentials:true


Quando il browser invierà un'intestazione personalizzata, farà prima una richiesta OPTION se tutto va bene (Origin, Method, Headers), quindi verrà effettuata la richiesta reale. In caso contrario, il browser genererà un errore SOP .

    
risposta data 28.06.2017 - 15:59
fonte

Leggi altre domande sui tag