Per quanto ho capito, ci sono due approcci per eseguire la protezione CSRF:
1) token CSRF per sessione: il token viene generato una volta per sessione. Questo è il modo più semplice;
2) Token CSRF per richiesta: il nuovo token viene generato su ogni richiesta e quello vecchio non è più valido. Questo è più sicuro ma la webapp potrebbe essere interrotta quando si fa tab e si fa clic sul pulsante "indietro" nel browser .
Alcuni giorni fa ho iniziato ad analizzare come il framework Node.js Connect implementa la protezione CSRF e ho notato che usa il terzo approccio:
Il nuovo token CSRF viene generato su ogni richiesta, ma quella precedente non diventa non valida . Quindi ci sono più token CSRF validi per l'utente contemporaneamente.
La mia domanda è : quali sono i vantaggi di più token CSRF validi ?
Grazie mille.
P.S. Non sono molto strong in inglese quindi per favore spiega il più semplicemente possibile. Grazie ancora
EDIT (riformulazione della mia domanda):
Il vantaggio principale di generare nuovi token su ciascuna richiesta (e di renderne invalido uno vecchio) è che il token diventa a breve termine e anche se l'attaccante ruba il token, scadrà molto velocemente. Ma con Connect un vecchio token non scade, che rende questo approccio uguale all'utilizzo di un singolo token per sessione.
Quindi perché gli sviluppatori Connect decidono di generare un nuovo token su ogni richiesta? Mi manca qualcosa?