Nella maggior parte delle moderne applicazioni a pagina singola, dobbiamo infatti archiviare il token da qualche parte sul lato client (caso d'uso più comune - per mantenere l'utente connesso dopo un aggiornamento della pagina).
Sono disponibili 2 opzioni in totale: Archiviazione Web (archiviazione di sessione, archiviazione locale) e un cookie lato client. Entrambe le opzioni sono ampiamente utilizzate, ma ciò non significa che siano molto sicure.
Tom Abbott sintetizza bene la sessione JWT Sicurezza del magazzino e del deposito locale :
L'archiviazione Web (localStorage / sessionStorage) è accessibile tramite JavaScript sullo stesso dominio. Ciò significa che qualsiasi JavaScript in esecuzione sul tuo sito avrà accesso all'archiviazione Web e per questo motivo può essere vulnerabile agli attacchi cross-site scripting (XSS) . XSS, in breve, è un tipo di vulnerabilità in cui un utente malintenzionato può iniettare JavaScript che verrà eseguito sulla tua pagina. Gli attacchi XSS di base tentano di iniettare JavaScript attraverso input del modulo, in cui l'utente malintenzionato inserisce <script>alert('You are Hacked');</script>
un modulo per vedere se è gestito dal browser e può essere visualizzato da altri utenti.
Per impedire XSS, la risposta comune è quella di fuggire e codificare tutti i dati non attendibili. React (principalmente) lo fa per te! Ecco una grande discussione su quanta protezione di vulnerabilità XSS è responsabile di React .
Ma questo non copre tutte le possibili vulnerabilità! Un'altra potenziale minaccia è l'uso di JavaScript ospitato su CDN o infrastrutture esterne .
Ecco di nuovo Tom:
Le app Web moderne includono librerie JavaScript di terze parti per test A / B, analisi di canalizzazione / mercato e pubblicità. Utilizziamo gestori di pacchetti come Bower per importare il codice di altre persone nelle nostre app.
Che cosa succede se solo uno degli script che usi è compromesso? JavaScript dannoso può essere incorporato nella pagina e l'archiviazione Web è compromessa. Questi tipi di attacchi XSS possono ottenere l'archiviazione Web di tutti che visita il tuo sito, a loro insaputa. Questo è probabilmente il motivo per cui un gruppo di organizzazioni consiglia di non archiviare nulla di valore o di fidarsi di qualsiasi informazione nella memoria web. Ciò include identificatori di sessione e token.
Pertanto, la mia conclusione è che, in quanto meccanismo di archiviazione, l'archiviazione Web non applica alcun standard sicuro durante il trasferimento . Chiunque legga l'archiviazione Web e la usi deve fare la dovuta diligenza per assicurarsi di inviare sempre il JWT su HTTPS e mai HTTP.