it-swarm.com.de

Ist es eine schlechte Praxis, die E-Mail-Adresse eines Benutzers in einem JWT zu speichern?

Ich verwende JWTs für die Benutzerauthentifizierung in einer Webanwendung. Ich habe eine Benutzer-Datenbank, in der die eindeutige ID jedes Benutzers seine E-Mail-Adresse ist. Um den Betreff des JWT zu identifizieren, habe ich derzeit einen Anspruch, in dem die E-Mail-Adresse des Benutzers im Token gespeichert ist. Ist das ein Sicherheitsproblem? Wenn ja, sollte ich eine GUID oder einen Hash der E-Mail-Adresse als ID verwenden?

8
Justin Borromeo

Die kurze Antwort lautet nein. Es sollte kein Problem geben, da email ein gültiger und registrierteröffentlicher Anspruch ist.

Ich habe eine Benutzer-DB, in der die eindeutige ID jedes Benutzers seine E-Mail-Adresse ist ...

Nun, es gibt eine geschützte Behauptung für die Benutzer-ID. Der Anspruch sub.

4.1.2. "sub" (Betreff) Anspruch

Der Anspruch "Sub" (Subjekt) identifiziert den Auftraggeber, der Gegenstand des JWT ist. Die Ansprüche in einem JWT sind normalerweise Aussagen über das Thema. Der Betreffwert MUSS entweder so festgelegt sein, dass er im Kontext des Emittenten lokal eindeutig oder global eindeutig ist . Die Bearbeitung dieses Anspruchs ist in der Regel anwendungsspezifisch . Der Wert "sub" unterscheidet zwischen Groß- und Kleinschreibung und enthält einen StringOrURI-Wert. Die Verwendung dieses Anspruchs ist OPTIONAL.

Vielleicht wäre es besser, den Anspruch sub anstelle von email zu verwenden, da die E-Mail in Ihrem System eine ID ist und Sie sie wahrscheinlich unabhängig vom Format als solche behandeln möchten.

Nichts hindert Sie jedoch daran, sowohl sub als auch email zu implementieren. Das ist auch anwendungsspezifisch.

Unter Sicherheitsgesichtspunkten sollten die Hauptanliegen darin bestehen, TLS (https) und Vorzeichen/Verschlüsselung des Tokens zu implementieren =.

9
Laiv

Ja, es ist eine schlechte Praxis und ein Sicherheitsproblem.

E-Mail-Adressen sind PII (personenbezogene Daten). Wie alle anderen PII, E-Mail-Adressen sollten niemals unverschlüsselt in Ruhe gespeichert werden; dies ist von Natur aus unsicher.

Wenn Ihre JWTs irgendwo in Ruhe gespeichert werden sollen - beispielsweise in einer Datenbank oder in einem lokalen oder Sitzungsspeicher im Browser -, sollten Sie in Ihrem JWT keine Ansprüche verwenden, die PII verfügbar machen.

Die Tatsache, dass email ein registrierter IANA JWT-Anspruch ist, ist nebensächlich - ebenso wie given_name, middle_name, family_name, birthdate, phone_number und address, aber das ist auch alles PII.

3
alexwebb2

Es ist üblich, die E-Mail-Adresse eines Benutzers in einem Token zu speichern.

Die Eigenschaften dieser E-Mail-Adresse liegen beim Identitätsanbieter (ist sie eindeutig, kann sie geändert werden usw.)

Einige Szenarien, die möglicherweise unsicher sind, sind ein Benutzer, der seine E-Mail-Adresse ändert, und ein anderer Benutzer, der diese E-Mail-Adresse verwendet. Oder ein Benutzer, der sein Konto löscht und dieses Konto unter derselben E-Mail-Adresse neu erstellt. Es besteht auch die Gefahr, dass ein Administrator versehentlich das Kontrollkästchen "Eindeutige E-Mail-Adressen erzwingen" in der Konfiguration des Identitätsanbieters deaktiviert (falls vorhanden).

Sie sollten sich auch bewusst sein, dass diese E-Mail-Adresse PII in Protokolle und Berichte überträgt.

Bei Verwendung einer UUID oder einer anderen nicht erratenen, stabilen Kennung werden die meisten dieser Probleme vermieden. Wenn ein neues Konto erstellt wird, erhält es eine neue UUID und wird so zu einer neuen Identität, während die E-Mail-Adresse geändert werden kann und dieselbe Identität bleibt.

0
Martin K