Ho appena installato una semplice protezione CSRF nella mia applicazione. Crea una briciola unica che viene convalidata rispetto al valore di una sessione al momento dell'invio di un modulo.Token CSRF: come implementare correttamente?
Purtroppo questo significa ora che non riesco a tenere aperte più istanze (schede nel browser) della mia applicazione contemporaneamente mentre i frammenti di CSRF si scontrano l'uno con l'altro.
Devo creare un singolo token per ogni modulo effettivo o utilizzare una briciola condivisa e condivisa per tutte le mie forme? Quali sono i buonsenso qui?
Intendi dire che ogni istanza di ogni modulo ha il proprio token? Vale a dire. ''? – Industrial
Penso che avere un singolo token per sessione sia ragionevole finché non li si invia tramite http (solo https). Condividono molti problemi di sicurezza con gli ID di sessione. Se si dispone di XSS, l'attaccante può aprire iframe, leggere i token e fare CSRF comunque. – Erlend
Se hai XSS, hai già perso. Ulteriori formazioni per form non ti salveranno (l'attaccante sarà in grado di ottenere un nuovo modulo, con nuovo nonce, riempirlo e inviarlo, proprio come farebbe l'utente). Un singolo valore per utente è assolutamente sufficiente per CSRF. – Kornel