I token anti-CSRF devono essere nascosti?

4

Se i token non sono nascosti, penso che l'attaccante possa caricare il sito sfruttato in un iframe, ma non sarà in grado di accedere al token a causa dello stesso criterio di origine (SOP).

È corretto, o ci sono altri modi per accedere ai token CSRF?

    
posta sel 11.07.2017 - 21:45
fonte

3 risposte

1

Non puoi nascondere o crittografare il tuo token CSRF, poiché di solito viene passato all'applicazione web in GET HTTP o richiesta HTTP POST e dovrebbe essere presente sulla pagina HTML (o generata da JavaScript, che è fondamentalmente la stessa).

Il token CSRF è solo un modo per proteggere la tua applicazione web dagli invii automatici (ovvero l'attacco CSRF). Il suo uso è raccomandato quando si tratta di dati non molto sensibili. Se vuoi proteggere la tua applicazione web da CSRF con il token CSRF, ti consiglio di generare un nuovo token almeno ogni 15-20 minuti, quindi non può essere forzato con forza bruta.

In molte implementazioni del mondo reale il token CSRF è associato all'identificatore di sessione. Lo stesso consiglio vale anche per l'identificatore di sessione.

Come per SOP, non dovrebbe consentire di default di accedere agli elementi all'interno di iframe. Tuttavia, ci sono state vulnerabilità in molti browser in passato, il che ha permesso questo comportamento.

La linea di fondo - non devi nascondere il token CSRF. Invece, generane uno nuovo ogni tanto. Per azioni molto sensibili utilizzare ulteriori mezzi di verifica dell'utente, ad es. richiedere la password dell'utente o utilizzare OTP.

    
risposta data 12.07.2017 - 01:13
fonte
0

Nascosto? Preferisco dire comunicare in modo sicuro dove solo l'utente ha accesso al token. Se c'è un iframe malevolo sul tuo sito (magari un annuncio malvagio o meglio ancora un iframe invisibile) dovresti comunque essere protetto da SOP se non hai fatto una cattiva configurazione con Cross Origin Resource Sharing.

Voglio anche aggiungere come avvertenza che i vecchi browser (anche un anno fa) avevano alcuni exploit che ti permettevano di uscire dal SOP. Questo non è di progettazione!

    
risposta data 11.07.2017 - 22:03
fonte
0

Il token CSRF non deve essere nascosto nella pagina html, ma deve essere crittografato durante il transito per prevenire una situazione MITM in cui l'utente malintenzionato annusa il token CSRF e invia una richiesta di modulo per conto dell'utente. Questo tipo di attacco in genere comporta l'invio di moduli utilizzando una sessione dell'utente autenticato.

Se un utente malintenzionato carica il sito con un modulo protetto da CSRF in iframe , il sito presenta un problema con le intestazioni di risposta CSP. Principalmente, nel sito manca una direttiva X-Frame-Options configurata in modo sicuro.

    
risposta data 11.07.2017 - 22:14
fonte

Leggi altre domande sui tag