Voglio proteggere la mia applicazione contro XSRF. Sebbene non sia in grado di capire veramente quale sia il problema e come funzioni la mia soluzione, dopo alcune ricerche ho trovato una soluzione, che Angular utilizza. Per quanto ho ottenuto, la mia soluzione richiede i seguenti passaggi:
- Il cliente invia una richiesta per la mia SPA.
- Invio il token XSRF (non solo HTTP per consentire a JS di leggerlo). Salvo anche questo token XSRF per la sessione degli utenti sul server.
- Per ogni richiesta POST voglio che il mio client legga il token XSRF e imposta un'intestazione
X-XSRF-TOKEN
su questo token. - Controllerò ogni richiesta controllando se l'intestazione della richiesta e il token XSRF della sessione utente corrispondono. Se lo fanno, controllerò anche JWT per l'autenticazione, se necessario.
- Dopo aver convalidato il token XSRF, apporterò le modifiche al database. Inoltre cambierò nuovamente il token XSRF e invierò il nuovo token all'utente e cambierà token per la sessione.
Ma non sono sicuro di come questo aiuti, se ho una vulnerabilità XSS, dal momento che qualsiasi codice JavaScript iniettato potrebbe fare lo stesso. Voglio capire il problema e come questa soluzione aiuta.
Cordiali saluti, sto anche implementando l'autenticazione basata su JWT, usando Redis per la gestione delle sessioni, su un server Express.