JWT richtig einsetzen: häufige Sicherheitsfehler
Ein JWT ist signiert, nicht verschlüsselt; die Signaturprüfung bei jeder Anfrage, die Felder alg und Ablaufzeit, der Speicherort und das Widerrufsproblem: acht Fehler, die man beim API-Entwurf vermeiden sollte.
JWT (JSON Web Token) ist ein verbreiteter Weg, Identitäts- und Berechtigungsinformationen zwischen APIs zu übertragen. Es sieht einfach aus: drei durch Punkte getrennte Teile. Die meisten Fehler entstehen aus dieser scheinbaren Einfachheit. Die folgende Liste sammelt die Punkte, die jedes Team prüfen sollte, das Token ausstellt und prüft; für detaillierte Empfehlungen siehe RFC 8725 zu den Best Practices der JWT-Sicherheit.
1. Ein JWT ist nicht verschlüsselt
Header und Payload eines signierten JWT sind nur base64url-kodiert; jeder kann sie lesen. Keine Passwörter, Ausweisnummern oder vertraulichen Geschäftsdaten in die Payload legen. Ist Vertraulichkeit nötig, nutzt man die verschlüsselte Form (JWE) oder trägt im Token nur eine Referenznummer und hält die Daten auf dem Server.
2. Dekodieren ist nicht Prüfen
Die Payload zu dekodieren und „Benutzer: ayse, Rolle: admin“ zu lesen, zeigt nicht, dass das Token echt ist. Vertrauen entsteht erst, nachdem die Signatur mit dem Schlüssel geprüft wurde. Servercode, der nur dekodiert und den Feldern vertraut, lässt jeden sein eigenes Token schreiben.
3. „alg“: „none“ und Algorithmenverwechslung
Das Feld alg im Header stammt vom Token selbst; ein Angreifer kann es ändern. Der Prüfer muss den akzeptierten Algorithmus aus seiner eigenen Konfiguration nehmen, nicht aus dem Header. „none“ darf nie akzeptiert werden, und ein mit einem öffentlichen Schlüssel signiertes Token (RS) darf nicht mit HS „geprüft“ werden, indem derselbe Schlüssel als Geheimnis dient.
4. Ablauf- und Zielgruppenfelder nicht prüfen
- Wird das Feld exp (Ablauf) nicht geprüft, bleibt das Token ewig gültig.
- Werden iss (Aussteller) und aud (Zielgruppe) nicht geprüft, gilt ein für einen anderen Dienst ausgestelltes Token auch bei Ihrer API.
- nbf (nicht vor) und Zeitabweichung: Ein paar Minuten Toleranz zwischen Servern genügen, keine Stunden.
5. Ein langlebiges Zugriffstoken
Ein Zugriffstoken sollte kurzlebig sein (Minuten), mit einem eigenen Refresh-Token zur Verlängerung der Sitzung. Ein gestohlenes langlebiges Token lässt sich mit voller Berechtigung nutzen, bis der Diebstahl bemerkt wird.
6. Der Speicherort
Ein Token im localStorage des Browsers fällt jedem Skript in die Hände, das in die Seite gelangt (XSS). In einem Cookie mit den Flags HttpOnly und Secure und passender SameSite-Einstellung können Skripte es nicht lesen; wer Cookies nutzt, muss aber zusätzlich an CSRF denken. Keine Option genügt allein.
7. Nicht widerrufen können
Ein JWT ist ein in sich geschlossenes Token; um es vor Ablauf zu entwerten, braucht der Server einen zusätzlichen Mechanismus (Sperrliste, Sitzungsversion, kurze Lebensdauer). Das Token eines Benutzers, der sich abmeldet oder dem die Berechtigung entzogen wird, bleibt bis zum Ablauf gültig; das im Entwurf akzeptieren oder schließen.
8. Ein schwacher HMAC-Schlüssel
Bei Verfahren mit gemeinsamem Schlüssel wie HS256 lässt sich ein erratbarer oder kurzer Schlüssel durch Offline-Ausprobieren knacken. Der Schlüssel sollte zufällig erzeugt, ausreichend lang und getrennt vom Code gespeichert sein.
So nutzen Sie das Werkzeug
Mit dem JWT-Decoder öffnen Sie ein Token im Browser und sehen Header, Payload, Zeitfelder und schwache Einstellungen; das Token wird nirgendwohin gesendet. Das Werkzeug dekodiert, es prüft nicht: Die echte Prüfung muss auf Ihrem Server mit dem Schlüssel erfolgen. Zum Ausprobieren der Signaturlogik gibt es die Webhook-HMAC-Signaturprüfung, für Schlüssel den Rechner für Passwortstärke und Entropie. Für die Überprüfung Ihrer API-Sicherheit schreiben Sie uns.
Lassen Sie uns das für Ihr Werk besprechen
Weitere Notizen
Alle Notizen →- 3 Min. LesezeitSechs häufige Fehler auf UDI-Etiketten von MedizinproduktenVerpackungsebenen, Änderungen mit neuer UDI-DI, Verwechslung von Basic UDI-DI und UDI-DI, fehlende Herstellungskennung, Etikett und Barcode passen nicht zusammen, ungeprüfte Druckqualität: die häufigsten UDI-Fehler bei Medizinprodukten.
- 2 Min. LesezeitSechs Situationen, in denen die Karton-Paletten-Beziehung bei der Aggregation brichtAusgeschleuste Packungen, Teilkartons, Probenahme, manuelle Eingriffe, Doppelzuordnung und Palettenauflösung: die häufigsten Situationen, in denen Aggregationsdaten vom physischen Inhalt abweichen, und wie man sie an der Linie verhindert.
- 2 Min. LesezeitLücken und fehlerhafte Werte in SCADA-Daten: was vor der Modellierung zu tun istZeitstempel, Lücken, eingefrorene Sensoren, physikalisch unmögliche Werte, Abregelung und Wartungszeiten, Sensortausch: was in SCADA-Daten vor einem Modell für vorausschauende Wartung oder Leistungsprognose zu prüfen ist.