JWT in localStorage con sessionId crittografato

3

Cosa voglio:

  • Archivia una JWT in localStorage. Il JWT contiene indicazioni sull'autorizzazione.
  • Impedisci che il JWT venga rubato e utilizzato da un utente malintenzionato (utilizzando XSS)
  • Evita CSRF

L'archiviazione del JWT in localStorage non è buona, in quanto lo sfruttamento di XSS comporterebbe un JWT rubato, che un utente malintenzionato potrebbe utilizzare per l'autorizzazione.

L'archiviazione di JWT nel cookie http non è valida poiché non ha spazio sufficiente per le attestazioni.

Una possibile soluzione è:

  • Crea un cookie solo http con un ID di sessione
  • Archivia JWT in localStorage con la stessa sessioneId crittografato all'interno
  • Sul server, verifica che l'ID di sessione nel JWT e il cookie corrispondano prima di utilizzare le attestazioni.

In questo modo il JWT può essere rubato, ma non può essere usato a meno che l'attacker non abbia anche il sessionId dal cookie. Inoltre, CSRF non è possibile poiché un cookie non è sufficiente per l'autorizzazione.

Ci sono dei difetti con il mio ragionamento? Esistono modi più semplici per realizzare la stessa cosa?

    
posta Magnus Jeffs Tovslid 30.04.2018 - 10:55
fonte

0 risposte

Leggi altre domande sui tag