2015-06-16 12 views
7

Qual è il posto migliore in cui archiviare i token Web JSON per l'autenticazione su una SPA con NodeJS e (ad esempio) AngularJS?NodeJS: dove archiviare JWT sul lato client? sessionStorage, localStorage o cookie?

Quello che ho ottenuto finora:

luoghi possibili:

  • HTML5 Web bagagli (localStorage/sessionStorage)
  • Cookies

Web Storage (localStorage/sessionStorage) è accessibile tramite JavaScript sullo stesso dominio. Ciò significa che qualsiasi JavaScript in esecuzione sul tuo sito avrà accesso all'archivio web e, a causa di ciò, può essere vulnerabile agli attacchi XSS (cross-site scripting).

localStorage ha un tempo di scadenza diversa, sessionStorage sarà accessibile solo mentre e dalla finestra che lo ha creato è aperto. localStorage dura fino a quando non lo elimini o l'utente lo elimina.

I cookie, se utilizzati con la bandiera del cookie HttpOnly, non sono accessibili tramite JavaScript e sono immuni a XSS. Tuttavia, i cookie sono vulnerabili alla falsificazione di richieste tra siti (CSRF).

Allora, qual è il modo più sicuro per memorizzare JWTs

+0

Ho fornito una [risposta] (http://stackoverflow.com/a/40376819/204699) su questo argomento a una domanda correlata che potrebbe avere utili informazioni aggiuntive su tutte le possibilità. –

risposta

0

È possibile memorizzare la JWT ogni dove si desidera. Se vuoi proteggerlo puoi cifrare il token e memorizzarlo in localstorage/cookies; e mantieni la chiave nella tua app angularJs come costante. Quindi, il token rimarrà al sicuro e potrà essere decifrato solo dalla tua app.

1

sessionStorage: se si desidera memorizzare il token, finché la pagina non viene chiusa. localStorage: per archiviazione persistente. Cookie: aiuta il token a scadere dopo un certo periodo di tempo.

0

NON mantenere la chiave nell'app Angolare come costante. Se si desidera convalidare in modo sicuro il token JWT, recuperare il JWT da localStorage, inviarlo al server in un'intestazione Autorizzazione in una chiamata $ http.get().

La chiave deve essere visibile/accessibile dal codice sul server. Quando il server riceve il JWT dall'intestazione Autorizzazione, può controllare se il carico utile JWT è stato manomesso. Se ha quindi restituito una sorta di errore di autorizzazione alla chiamata $ http.get().

Problemi correlati