2015-06-16 3 views
7

Wo speichern Sie am besten JSON-Web-Tokens für die Authentifizierung in einem SPA mit NodeJS und (zum Beispiel) AngularJS?NodeJS: Wo können JWTs auf der Client-Seite gespeichert werden? sessionStorage, localStorage oder Cookies?

Was ich habe bisher:

Mögliche Orte:

  • HTML5 Web Storage (localstorage/session)
  • Plätzchen

Web Storage (localstorage/session) ist über JavaScript auf derselben Domain erreichbar. Dies bedeutet, dass JavaScript, das auf Ihrer Website ausgeführt wird, Zugriff auf Webspeicher hat und daher anfällig für Cross-Site-Scripting-Angriffe (XSS) sein kann.

local hat eine andere Ablaufzeit, session nur zugänglich sein, während und durch das Fenster, das erstellt es geöffnet ist. localStorage dauert, bis Sie es löschen oder der Benutzer löscht es.

Cookies, wenn mit dem HttpOnly Cookie-Flag verwendet, sind nicht über JavaScript zugänglich und sind immun gegen XSS. Cookies sind jedoch anfällig für Cross-Site-Request-Forgery (CSRF).

Also, was ist die sicherste Art und Weise JWTs speichern

+0

Ich habe eine [Antwort] (http://stackoverflow.com/a/40376819/204699) zu diesem Thema zu einer verwandten Frage, die nützliche zusätzliche Informationen über alle Möglichkeiten haben kann, zur Verfügung gestellt. –

Antwort

0

Sie können die JWT speichern jeder, wo Sie wollen. Wenn Sie es sichern möchten, können Sie das Token verschlüsseln und in localstorage/cookies speichern; und halte den Schlüssel in deiner angularJs App als Konstante. Der Token bleibt also sicher und kann nur von Ihrer App entschlüsselt werden.

1

sessionStorage: Wenn das Token gespeichert werden soll, bis die Seite geschlossen wird. localStorage: Für persistenten Speicher. Cookies: Helfen Sie dem Token, nach einer gewissen Zeit abzulaufen.

0

Den Schlüssel NICHT in der Angular App als Konstante behalten. Wenn Sie das JWT-Token sicher validieren möchten, rufen Sie das JWT von localStorage ab und senden es an den Server in einem Autorisierungsheader in einem $ http.get() - Aufruf.

Der Schlüssel sollte nur durch Ihren Code auf dem Server sichtbar/zugänglich sein. Wenn der Server die JWT aus dem Authorization-Header bezieht, kann er überprüfen, ob die JWT-Nutzlast manipuliert wurde. Wenn es dann eine Art von Autorisierungsfehler zurück zum Aufruf $ http.get() zurückgegeben hat.

Verwandte Themen