Wie ist die Verwendung eines JSON-Webtokens sicherer als ein opakes Sitzungstoken? In beiden Szenarien werden die Token zuerst an den Client gesendet und dann auf dem Server überprüft, wenn ein Client eine geschützte Ressource anfordert.Wie ist JSON Web Token sicherer als Cookie/Sitzung?
Antwort
Es gibt verschiedene Gründe, warum JWTs sicherer sind. Ich liste sie auf und gebe Ihnen auch Gründe, warum das nicht wirklich der Fall ist, da es in beide Richtungen schwingt.
JWTs können mit einem Geheimnis mit sicheren Algorithmen wie HS256 und RS256 signiert werden. Eine umfassende Liste finden Sie here. Darüber hinaus können Sie auch die Nutzlast des JSON-Web-Tokens verschlüsseln. Sitzungstoken können jedoch auch mit einem erstklassigen Algorithmus sicher erstellt und in einem signierten Cookie gespeichert werden.
JWT kann entweder in einem Cookie oder im Web Storage (lokaler/Session Storage) gespeichert werden. Wenn Sie Ihre JWTs nicht in einem Cookie speichern, sind Sie nicht anfällig für CSRF. Und Sie können entscheiden, sie über den Autorisierungsheader für jede HTTP-Anfrage zu senden. Es gibt jedoch noch einen Vorbehalt. Javascript wird verwendet, um vom Webspeicher aus auf den JWT zuzugreifen, wodurch Sie weiterhin für andere Angriffsformen wie XSS (Cross-Site Scripting) offen sind. Erwähnenswert ist, dass es einfacher ist, mit XSS als CSRF umzugehen.
- In einer Situation, in der Ihr JWT manipuliert wurde, können Sie das Token widerrufen oder auf die schwarze Liste setzen. Dies bedeutet, dass Sie jedes Mal einen Anruf bei der Datenbank tätigen müssen, wenn Sie diese Art von Operation durchführen möchten, von der ich Ihnen nicht rate. Die bevorzugte Option besteht darin, kurzlebige Token zu verwenden.
Im Fall von OAuth, undurchsichtigen Token sonst als Träger Token bekannt sind zufällige Zeichenfolge, die in irgendeiner Art von Hash-Speicher auf dem Server zusammen mit einem Ablauf gespeichert werden, wobei der Umfang angefordert (zB Zugriff auf Freundesliste) und der Benutzer, der seine Zustimmung gegeben hat. Später, wenn die API aufgerufen wird, wird dieses Token gesendet und die Server-Suche in der Hash-Tabelle durchgeführt, um den Kontext für die Autorisierungsentscheidung zu regenerieren (ist sie abgelaufen?) Hat dieser Token den richtigen Bereich, der mit der API verknüpft sein soll zugegriffen?). Der Hauptunterschied zwischen opaken Token und signierten Token (z. B. JWT) besteht darin, dass JWTs zustandslos sind. Sie müssen nicht in einer Hash-Tabelle gespeichert werden.
Fazit
Die Bibliotheken verwenden, um Ihre JWTs zu signieren und verschlüsseln sicher sein sollten Ihren Authentifizierungsprozess, um sicherzustellen, ist auch sicher. Sie sollten Cookies auch als Speichermechanismus verwenden, anstatt sie für die Anmeldung zu verwenden. Sie können argumentieren, dass die Verwendung von JWTs mehr Vorteile bietet, da sie einfacher zu skalieren sind und in OAuth-Fällen verwendet werden können, die Sie in dieser article finden können. Am Ende des Tages fällt es meiner Meinung nach einfach auf die Logik/Logik der Entwickler, um sicherzustellen, dass die richtigen Schritte befolgt werden, um eine App zu sichern, unabhängig davon, welche Form von Token für die Authentifizierung oder Autorisierung verwendet wird. Use Case ist auch in diesem Zusammenhang der Schlüssel!
- 1. JSON Web Token (JWT) Sicherheit
- 2. Json Web Token JWT
- 3. JWT (Json web token) Vs Benutzerdefiniertes Token
- 4. Json Web-Token läuft nicht
- 5. ist mt_rand() sicherer als rand()
- 6. JSON-Web-Token decodieren (Xamarin.Android)
- 7. CSRF-Schutz mit JSON-Web-Token
- 8. SpringCloud Microservices JSON Web Token (JWT) Sicherheit
- 9. Was ist der Unterschied zwischen JSON Web Signature (JWS) und JSON Web Token (JWT)?
- 10. Wie füge ich jedem Header einen Json-Web-Token hinzu?
- 11. Session-Management mit JSON-Web-Token in Microservices
- 12. Client-ID oder mehr Audienzen In JSON Web Token
- 13. REST vs SOAP - Ist SOAP wirklich sicherer als REST?
- 14. Warum ist mein unsicherer Code langsamer als mein sicherer Code?
- 15. JSON Web Token (JWT) Vorteile/Nachteile gegenüber Cookies
- 16. Sammlung sicherer als Standardliste mit generischem Typ?
- 17. pgSQL oder mySQL ist sicherer?
- 18. wie json als Ergebnis von .net Web-Service erhalten
- 19. Wie gebe ich eine Zeichenfolge als gültige JSON aus der Spring Web App zurück?
- 20. Welches ist sicherer OFB oder CFB?
- 21. Wie zu speichern Json Web Token in mongodb mit Knoten Express
- 22. Wie verifiziere ich ein JSON-Web-Token mithilfe eines öffentlichen RSA-Schlüssels?
- 23. Syntaxerror: unerwartetes Token & in JSON
- 24. JSON-Decodierung: Unerwarteter token: StartArray
- 25. Was ist ein thread-sicherer ByteArrayOutputStream?
- 26. Anfrage-Token mit JQuery von Web API
- 27. Web-API, Rückgabe 403, wenn/Token-Aufruf nicht sicher ist
- 28. Was ist ein sicherer Overhead für RequestAdditionalTime()?
- 29. JSON + Node.js - Unerwartetes Token o
- 30. Ist Java 8 Stream ein sicherer Rückgabetyp?
Sie können überprüfen: http://cryto.net/~joepie91/blog/2016/06/13/stop-using-jwt-for-sessions – dbautistav