Schutz vor E-Mail-Aufzählung aktivieren oder deaktivieren
In diesem Leitfaden wird die Funktion zum Schutz vor E-Mail-Aufzählung erläutert und es wird beschrieben, wie Sie sie aktivieren und deaktivieren. Wenn Sie Ihr Projekt am oder nach dem 15. September 2023 erstellt haben, ist der Schutz vor der Aufzählung von E‑Mail-Adressen standardmäßig aktiviert.
Übersicht
Die E‑Mail-Aufzählung ist eine Art von Brute-Force-Angriff, bei dem ein böswilliger Akteur versucht, Nutzer in einem System zu erraten oder zu bestätigen, indem er eine E‑Mail-Adresse an die API übergibt und die Antwort prüft.
Ohne Schutz vor E-Mail-Enumeration gibt Identity Platform Informationen zurück, die in einem E-Mail-Enumerationsangriff verwendet werden können:
Es wird versucht, sich mit einer E‑Mail-Adresse anzumelden, die im System nicht vorhanden ist. Identity Platform gibt einen
EMAIL_NOT_FOUND
-Fehler zurück.Es wird versucht, sich mit einer E‑Mail-Adresse zu registrieren, die bereits im System vorhanden ist. Identity Platform gibt einen
EMAIL_EXISTS
-Fehler zurück.
Mit der E-Mail-Aufzählungsfunktion von Identity Platform können Sie Nutzerkonten in Ihrer App vor diesen Angriffen schützen.
Wenn der Schutz vor E‑Mail-Aufzählung aktiviert ist, verhält sich Ihr Projekt so:
Die
fetchSignInForEmail
API schlägt fehl. Das Verknüpfen anonym authentifizierter Nutzer mit einer E-Mail-Adresse ist vor SDK-Version 22.3.0 für Android, 10.18.0 für iOS und 10.6.0 für das Web ebenfalls nicht möglich.Beim Aufrufen der
createAuthUri
REST API oder derfetchSignInMethodsForEmail
Client SDK-Methode auf allen Plattformen wird keine Liste der Anmeldemethoden für eine bestimmte E-Mail-Adresse mehr zurückgegeben.Nutzer können ihre E‑Mail-Adresse erst ändern, wenn sie die neue Adresse bestätigt haben. So können Sie beispielsweise die E-Mail-Adresse eines Nutzers nicht mehr mit der
update
REST API, dersetAccountInfo
REST API oder der Client-SDK-MethodeupdateEmail
auf allen Plattformen ändern.Sie können stattdessen
verifyBeforeUpdateEmail
für Web und Android odersendEmailVerification(beforeUpdatingEmail:)
für iOS verwenden.Sie können die
setAccountInfo
REST API nicht mehr verwenden, um einen E‑Mail-Adresse/Passwort-Anbieter mit einem bestehenden Nutzerkonto zu verknüpfen. Sie können die Client-SDK-MethodelinkWithCredential
mit einemEmailAuthCredential
auf keiner Plattform mehr verwenden. Verwenden Sie stattdessen die REST APIsignUp
und übergeben Sie das ID-Token des Nutzers im FeldidToken
sowie die Felderemail
undpassword
zum Verknüpfen.Entfernt Fehlerantworten für E-Mail-Bestätigungsabläufe, einschließlich Abläufe, die durch Aufrufen der
sendOobCode
REST API mit den AnfragetypenVERIFY_AND_CHANGE_EMAIL
oderPASSWORD_RESET
und durch Aufrufen vonverifyBeforeUpdateEmail
für Web und Android,sendEmailVerification(beforeUpdatingEmail:)
für iOS odersendPasswordResetEmail
auf allen Plattformen initiiert wurden.Wenn Sie eine Anfrage zum Zurücksetzen des Passworts stellen, wird eine Bestätigungs-E-Mail nur gesendet, wenn die E-Mail-Adresse vorhanden ist. Wenn Sie eine Anfrage zur Änderung der E-Mail-Adresse stellen, wird eine Bestätigungs-E-Mail nur gesendet, wenn die E-Mail-Adresse noch nicht vorhanden ist. In beiden Fällen gibt es keine spezifischen Fehlermeldungen, die darauf hinweisen, dass E‑Mails nicht gesendet werden.
Wir empfehlen, dass Sie Nutzern nicht erlauben, sich ohne E-Mail-Bestätigung zu registrieren.
Bei ungültigen Anmeldevorgängen wird eine
INVALID_LOGIN_CREDENTIALS
-Fehlerantwort zurückgegeben. Bei ungültigen Registrierungen werden weiterhinEMAIL_EXISTS
-Fehler zurückgegeben. Weitere Informationen finden Sie im nächsten Abschnitt.
Wenn Ihre App auf einem der Verhaltensweisen basiert, die durch den Schutz vor der Aufzählung von E-Mail-Adressen geändert wurden, können Sie diesen Schutz deaktivieren. Dies ist jedoch langfristig nicht empfehlenswert. Weitere Informationen finden Sie im nächsten Abschnitt.
Sicherheitsempfehlungen
Eine der gängigsten Methoden für Kontoübernahmeangriffe ist das Credential Stuffing mit Anmeldedaten, die durch Datenlecks offengelegt wurden oder leicht zu erraten sind. Die E-Mail-Enumeration kann auch verwendet werden, um vertrauliche Informationen über Ihre Nutzer zu erhalten oder Phishing-Angriffe gegen sie durchzuführen. Aus diesen Gründen empfiehlt Google, die Funktion zum Schutz vor E-Mail-Aufzählung zu verwenden, um Ihre Apps vor solchen Angriffen zu schützen.
Wenn Sie Ihr Projekt am oder nach dem 15. September 2023 erstellt haben, ist der Schutz vor der Aufzählung von E‑Mail-Adressen standardmäßig aktiviert. Wir empfehlen, den Schutz vor der Aufzählung von E-Mail-Adressen aktiviert zu lassen und nicht auf die Verhaltensweisen zu setzen, die weiter oben in diesem Leitfaden aufgeführt sind.
Wenn Sie Ihr Projekt vor dem 15. September 2023 erstellt haben, ist der Schutz vor der Aufzählung von E-Mail-Adressen nicht automatisch aktiviert.
Wenn Ihre Apps nicht auf einem der oben beschriebenen Verhaltensweisen basieren, empfehlen wir, den Schutz vor E-Mail-Aufzählung sofort zu aktivieren.
Wenn Ihre Apps auf einem der oben beschriebenen Verhaltensweisen beruhen, empfehlen wir, so schnell wie möglich mit der Migration zu beginnen und den Schutz vor E-Mail-Aufzählung zu aktivieren.
Zusätzlich zum Schutz vor E‑Mail-Aufzählung sollten Sie Maßnahmen ergreifen, um Missbrauch der Registrierungs-Endpunkte Ihres Projekts zu verhindern, die weiterhin EMAIL_EXISTS
-Fehler zurückgeben. Dazu haben Sie mehrere Möglichkeiten:
- Aktivieren Sie App Check.
- Binden Sie reCAPTCHA in Ihren Registrierungsprozess ein.
- Die Anmeldung mit E-Mail-Adressen und Passwörtern oder E-Mail-Links ist nicht zulässig. Stattdessen müssen alternative Methoden wie die Google-Anmeldung verwendet werden.
Schutz vor E‑Mail-Enumeration aktivieren
So aktivieren Sie den Schutz vor E-Mail-Aufzählung:
Firebase Console
Rufen Sie in der Firebase Console die Seite Authentifizierungseinstellungen auf.
Zu den Authentifizierungseinstellungen
Wählen Sie im Bereich Nutzerkontoverwaltung die Option Nutzeraktionen aus.
Wählen Sie Schutz vor E-Mail-Enumeration (empfohlen) aus.
Klicken Sie auf Speichern.
Node.js
Installieren Sie das Admin SDK.
Um den Schutz vor der Aufzählung von E-Mail-Adressen zu aktivieren, haben Sie folgende Möglichkeiten:
So schützen Sie Projekte:
import { getAuth } from 'firebase-admin/auth'; getAuth().projectConfigManager().updateProjectConfig( { emailPrivacyConfig: { enableImprovedEmailPrivacy: true, }, } );
Schutz auf Mandantenebene:
import { getAuth } from 'firebase-admin/auth'; getAuth().tenantConfigManager().updateTenant(TENANT_ID, { emailPrivacyConfig: { enableImprovedEmailPrivacy: true, }, } );
Ersetzen Sie
TENANT_ID
durch die Mandanten-ID, für die Sie den Schutz vor E-Mail-Aufzählung aktivieren möchten.
REST
Geben Sie in der Google Cloud -Konsole mit dem
gcloud auth print-access-token
-Befehl ein Zugriffstoken für Ihre Projekt-ID aus:gcloud auth print-access-token --project=PROJECT_ID
Aktivieren Sie den Schutz vor E-Mail-Aufzählung für Ihre Projekt-ID mit der Identity Toolkit API:
curl -X PATCH -d "{'emailPrivacyConfig':{'enableImprovedEmailPrivacy':true}}" \ -H 'Authorization: Bearer ACCESS_TOKEN' \ -H 'Content-Type: application/json' -H 'X-Goog-User-Project: PROJECT_ID' \ "https://identitytoolkit.googleapis.com/admin/v2/projects/PROJECT_ID/config?updateMask=emailPrivacyConfig"
Ersetzen Sie Folgendes:
- ACCESS_TOKEN: das Zugriffstoken, das Sie zuvor generiert haben
- PROJECT_ID: Ihre Projekt-ID.
Schutz vor E‑Mail-Enumeration deaktivieren
So deaktivieren Sie den Schutz vor E-Mail-Aufzählung:
Firebase Console
Rufen Sie in der Firebase Console die Seite Authentifizierungseinstellungen auf.
Zu den Authentifizierungseinstellungen
Wählen Sie im Bereich Nutzerkontoverwaltung die Option Nutzeraktionen aus.
Deaktivieren Sie Schutz vor E-Mail-Enumeration (empfohlen).
Klicken Sie auf Speichern.
Node.js
Installieren Sie das Admin SDK.
Um den Schutz vor der Aufzählung von E‑Mail-Adressen zu deaktivieren, verwenden Sie eine der folgenden Optionen:
So schützen Sie Projekte:
import { getAuth } from 'firebase-admin/auth'; getAuth().projectConfigManager().updateProjectConfig( { emailPrivacyConfig: { enableImprovedEmailPrivacy: false, }, } );
Schutz auf Mandantenebene:
import { getAuth } from 'firebase-admin/auth'; getAuth().tenantConfigManager().updateTenant(TENANT_ID, { emailPrivacyConfig: { enableImprovedEmailPrivacy: false, }, } );
Ersetzen Sie
TENANT_ID
durch die Mandanten-ID, für die Sie den Schutz vor der Auflistung von E-Mail-Adressen deaktivieren möchten.
REST
Geben Sie in der Google Cloud -Konsole mit dem
gcloud auth print-access-token
-Befehl ein Zugriffstoken für Ihre Projekt-ID aus:gcloud auth print-access-token --project=PROJECT_ID
Schutz vor E-Mail-Aufzählung mit der Identity Toolkit API deaktivieren:
curl -X PATCH -d "{'emailPrivacyConfig':{'enableImprovedEmailPrivacy':false}}" \ -H 'Authorization: Bearer ACCESS_TOKEN' \ -H 'Content-Type: application/json' -H 'X-Goog-User-Project: PROJECT_ID' \ "https://identitytoolkit.googleapis.com/admin/v2/projects/PROJECT_ID/config?updateMask=emailPrivacyConfig"
Ersetzen Sie Folgendes:
- ACCESS_TOKEN: das Zugriffstoken, das Sie zuvor generiert haben
- PROJECT_ID: Ihre Projekt-ID.
Beispiel für eine Fehlerantwort
Wenn ein Nutzer versucht, sich mit einer falschen E-Mail-Adresse oder einem falschen Passwort anzumelden, oder versucht, sich mit einer E-Mail-Adresse zu registrieren, die bereits im System vorhanden ist, gibt Identity Platform einen Fehler ähnlich dem folgenden zurück:
{
"code": "auth/internal-error",
"message": "{\"error\":{\"code\":400,\"message\":\"INVALID_LOGIN_CREDENTIALS\",\"errors\":[{\"message\":\"INVALID_LOGIN_CREDENTIALS\",\"domain\":\"global\",\"reason\":\"invalid\"}]}}"
}