Supponiamo che abbia un'applicazione Web che utilizza token JWT e token CSRF nel suo schema di autenticazione. A quanto ho capito, funziona così:
- Quando un utente effettua l'accesso, il client invia una richiesta di accesso.
- Server imposta un token JWT firmato come cookie con
Set-Cookie ... ;Secure ;httpOnly
nella sua intestazione di risposta. Ciò impedisce gli attacchi XSS poiché il cookie non può essere letto da Javascript.
Il server - invia anche un token CSRF senza
httpOnly
impostato in modo che possa essere letto dal codice JavaScript.
- Quando il cliente effettua richieste future, il cookie JWT verrà automaticamente inviato e il CSRF dovrà essere impostato nell'intestazione della richiesta. Questo dovrebbe prevenire gli attacchi CSRF dal momento che il cookie CSRF dovrà essere letto.
Quindi in breve abbiamo:
-
L'impostazione del token JWT con
;Secure;HttpOnly
impedirà gli attacchi XSS. -
Il fatto che il client imposti il cookie CSRF nell'intestazione della richiesta impedirà gli attacchi CSRF.
Ma cosa succede se un utente malintenzionato ottiene il token CSRF utilizzando XSS e lo imposta come intestazione per le richieste inviate da un sito Web dannoso con un exploit CSRF. Questo attacco è possibile? In tal caso, come potrei migliorare il mio schema di autenticazione?
Grazie in anticipo.