posizionamento del token csrf

2

So che ci sono più posti dove mettere un token csrf e il più comune è inserire un campo di input nascosto in un modulo. Il secondo è in un cookie con la bandiera httpOnly. Quello che voglio sapere è che c'è un'opposizione a metterlo in una variabile javascript in modo che possa essere usato ogni volta che viene fatta una richiesta di posta per cambiare i dati.

Altrimenti devi metterlo nel campo nascosto di un modulo per ogni modulo e potrebbe essere un problema se il modulo viene generato dinamicamente.

    
posta Nathan 01.08.2018 - 09:38
fonte

1 risposta

3

È possibile aggiungere dinamicamente il token CSRF ai moduli tramite JavaScript. Ma devi essere a conoscenza di un paio di problemi:

  • Se disponi di moduli interdominio, devi fare attenzione che il tuo codice JavaScript non aggiunga token CSRF a loro, in quanto perderebbe il token.
  • Se la tua applicazione richiede agli utenti senza il massimo livello di privilegio di creare moduli, allora possono eseguire attacchi CSRF poiché i token verranno aggiunti automaticamente.
  • L'iniezione HTML porterà a CSRF tramite l'iniezione di un modulo, il che aumenta un po 'l'impatto dell'iniezione HTML. Allo stesso modo, se autorizzi un sottoinsieme di HTML per alcuni utenti e il tuo filtro presenta una vulnerabilità che consente la creazione di moduli, sarai vulnerabile a CSRF.

Non correlato: i token CSRF devono sempre essere in due punti; l'approccio più comune è archiviarli lato server nella sessione e in un altro punto (ad es. inviarli in un modulo). Questo sembra essere quello a cui ti stai riferendo nella tua domanda. Con questo approccio, la memorizzazione del token in un cookie anziché in un modulo non funzionerà (verrà sempre inviata e verrà convalidata rispetto al token sul lato server). La memorizzazione del token in un cookie verrebbe utilizzata al posto della memorizzazione sul lato server. Devi ancora inviarlo, ad esempio tramite il modulo.

    
risposta data 01.08.2018 - 10:30
fonte

Leggi altre domande sui tag