2015-06-26 4 views
9

Es gibt eine Menge Artikel rund um diskutieren, was ist der beste Ort, um JWT auf der Clientseite zu speichern. Kurz gesagt, sie sind alle über sind -jwt Authentifizierung: Cookie vs Header

  • Http-only sicheres Cookie - keine XSS, aber vulnarable

  • Header XSRF (gespeichert im lokalen Speicher oder DOM) - ohne XSRF, aber vulnarable zu

    XSS

ich glaube, ich mit einer extrem versierten Lösung dieses Problem kommen, aber da ich komplett Noob bin in Sicherheit bin ich nicht sicher, ob es wirklich versierte oder dumm ist.

Also, was ist, wenn Sie JWT teilen und einen Teil davon im Cookie und einen anderen Teil im Header speichern? Wäre es unzerstörbar?

Dies soll auch lösen 'Abmelden' Problem -. Kopfteil Löschen würde in Browser nicht in der Lage Protokollierung macht

Mit freundlichen Grüßen, Eugene.

Antwort

8

Der JWT muss zusammen bleiben, sonst funktioniert die Signaturvalidierung nicht.

Der Schutz vor XSRF ist ziemlich einfach, Sie brauchen nur einen weiteren Cookie.

Verwenden Sie niemals lokalen Speicher zum Speichern von Authentifizierungsinformationen, es folgt nicht den gleichen Domänen- und Ursprungsregeln wie Cookies. Lesen Sie hier mehr:

https://www.owasp.org/index.php/HTML5_Security_Cheat_Sheet#Storage_APIs

Haftungsausschluss: Ich arbeite bei Stormpath, wir haben eine Lösung Benutzerverwaltung gehostet und wir viel Zeit für Sicherheit ausgeben. Ich habe zwei Blog-Beiträge geschrieben, wo ich JWTs und Front-End-Auth diskutieren:

Token Based Authentication for Single Page Apps (SPAs)

https://stormpath.com/blog/build-secure-user-interfaces-using-jwts/

hoffe, das hilft!

+0

Aber extra Cookie zum Schutz vor XSRF bedeutet, Server-Side-Session zu halten, nicht wahr? Wenn dies der Fall ist, ist das Zusammenkleben von JWT viel einfacher und leichter. Und wenn nur ein Teil von JWT im lokalen Speicher gespeichert ist, kann es für einen Angreifer von Nutzen sein? – user656449