Utilizzo da molto tempo la sessione passport JS senza preoccuparmi seriamente dei problemi di sicurezza. Per il prossimo progetto ho pensato di sostituire session con JWT ma sorgono dubbi legati alla sicurezza mentre cerco di più su JWT .
Quindi, se utilizzo JWT per l'autenticazione, esistono due tipi di token, auth token e refresh token . Quando effettuo l'accesso, ottengo refresh token e questo viene utilizzato per comunicare con il server di autenticazione per ricevere auth token che verrà utilizzato per ottenere informazioni sensibili da data server . Ma questo refresh token che dovrebbe essere relativamente lungo vissuto rispetto a auth token che è di breve durata per essere aggiornato da refresh token dovrebbe essere memorizzato da qualche parte. Il suggerimento comune è stato localstorage , ma un token che può generare un numero infinito di auth token è esposto al lato client - questo non sembra sicuro.
Lo stesso vale per le sessioni. Quando archiviamo sessioni usando librerie come passport JS . ID (di solito) è serializzato in sessionStorage . Poi un altro client può prendere la sessione serializzata e usarla per autenticare in un altro dispositivo (è vero?).
Quindi nessuno di questi due metodi sembra molto sicuro (se quello che ho detto sopra è corretto). Stiamo utilizzando JWT e sessions con i citati rischi per la sicurezza o sto comprendendo questo errore?