Schutz für E-Mail-Aufzählungen aktivieren oder deaktivieren
In diesem Leitfaden wird die Schutzfunktion für E-Mail-Aufzählungen erläutert und Sie erfahren, wie Sie sie aktivieren und deaktivieren. Wenn Sie Ihr Projekt am oder nach dem 15. September 2023 erstellt haben, ist der Schutz der E-Mail-Aufzählung standardmäßig aktiviert.
Überblick
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-Aufzählungen gibt Identity Platform Informationen zurück, die für einen Angriff auf eine E-Mail-Aufzählung verwendet werden können:
Es wird versucht, sich mit einer E-Mail-Adresse anzumelden, die im System nicht vorhanden ist. Identity Platform gibt den Fehler
EMAIL_NOT_FOUND
zurück.Es wird versucht, sich mit einer E-Mail-Adresse zu registrieren, die bereits im System vorhanden ist. Identity Platform gibt den Fehler
EMAIL_EXISTS
zurück.
Sie können das Schutzfeature der Identity Platform zum Schutz vor E-Mail-Aufzählungen verwenden, um Nutzerkonten in Ihrer Anwendung vor diesen Angriffen zu schützen.
Wenn der Schutz für E-Mail-Aufzählungen aktiviert ist, verhält sich Ihr Projekt folgendermaßen:
Die
fetchSignInForEmail
API schlägt fehl. Die Verknüpfung anonymer authentifizierter Nutzer mit einer E-Mail-Adresse funktioniert auch vor der SDK-Version 22.3.0 für Android, 10.18.0 für iOS und 10.6.0 für das Web nicht.Eine Liste mit Anmeldemethoden für die angegebene E-Mail-Adresse wird nicht mehr zurückgegeben, wenn auf allen Plattformen die REST API
createAuthUri
oder die Client SDK-MethodefetchSignInMethodsForEmail
aufgerufen wird.Nutzer können ihre E-Mail-Adresse erst ändern, nachdem sie die neue Adresse bestätigt haben. Beispielsweise ist es nicht mehr möglich, die E-Mail-Adresse eines Nutzers mit der REST API
update
, dersetAccountInfo
REST API oder der Client SDK-MethodeupdateEmail
auf allen Plattformen zu ändern.Du kannst stattdessen
verifyBeforeUpdateEmail
für das Web und Android odersendEmailVerification(beforeUpdatingEmail:)
für iOS verwenden.Sie können die
setAccountInfo
REST API nicht mehr verwenden, um einen E-Mail-/Passwortanbieter mit einem vorhandenen Nutzerkonto zu verknüpfen. Sie können die Client-SDK-MethodelinkWithCredential
auf keiner Plattform mehr mit einemEmailAuthCredential
verwenden. Verwenden Sie stattdessen die REST APIsignUp
und übergeben Sie das ID-Token des Nutzers im FeldidToken
und die zu verknüpfenden Felderemail
undpassword
.Fehlerantworten bei E-Mail-Bestätigungsabläufen werden entfernt, z. B. solche, die durch Aufrufen der
sendOobCode
REST API mit den AnfragetypenVERIFY_AND_CHANGE_EMAIL
oderPASSWORD_RESET
und beim Aufrufen vonverifyBeforeUpdateEmail
für Web und Android,sendEmailVerification(beforeUpdatingEmail:)
für iOS odersendPasswordResetEmail
Client-SDK-Methoden auf allen Plattformen initiiert werden.Wenn Sie eine Anfrage zum Zurücksetzen des Passworts stellen, wird nur dann eine Bestätigungs-E-Mail gesendet, wenn die E-Mail-Adresse vorhanden ist. Wenn Sie eine Anfrage zur Änderung der E-Mail-Adresse stellen, wird nur dann eine Bestätigungs-E-Mail gesendet, wenn die E-Mail-Adresse noch nicht vorhanden ist. In beiden Fällen werden keine spezifischen Fehlermeldungen angezeigt, die darauf hinweisen, dass keine E-Mails gesendet werden.
Wir empfehlen, Nutzern die Registrierung ohne E-Mail-Bestätigung nicht zu erlauben.
Bei ungültigen Anmeldungen wird die Fehlermeldung
INVALID_LOGIN_CREDENTIALS
zurückgegeben. Bei ungültigen Registrierungen werden weiterhinEMAIL_EXISTS
-Fehler zurückgegeben. Die Empfehlungen finden Sie im nächsten Abschnitt.
Wenn Ihre Anwendung ein Verhalten benötigt, das vom E-Mail-Aufzählungsschutz geändert wurde, können Sie es derzeit deaktivieren. Dies wird jedoch auf lange Sicht nicht empfohlen. Weitere Informationen finden Sie im folgenden Abschnitt.
Sicherheitsempfehlungen
Eine der gängigsten Methoden für Angriffe auf Kontoübernahmen besteht darin, Credential Stuffing-Angriffe mit Anmeldedaten durchzuführen, die gehackt wurden oder leicht zu erraten sind. Die E-Mail-Aufzählung kann auch verwendet werden, um vertrauliche Informationen über Ihre Nutzer zu erhalten oder Phishing-Angriffe auf sie durchzuführen. Aus diesen Gründen empfiehlt Google, die Schutzfunktion für E-Mail-Aufzählungen zu verwenden, um Ihre Anwendungen vor solchen Angriffen zu schützen.
Wenn Sie Ihr Projekt am oder nach dem 15. September 2023 erstellt haben, ist der Schutz der E-Mail-Aufzählung standardmäßig aktiviert. Wir empfehlen, den Schutz für E-Mail-Aufzählungen aktiviert zu lassen und sich nicht auf die zuvor in diesem Leitfaden aufgeführten Verhaltensweisen zu verlassen.
Wenn Sie Ihr Projekt vor dem 15. September 2023 erstellt haben, ist der Schutz der E-Mail-Aufzählung nicht automatisch aktiviert.
Wenn Ihre Anwendungen nicht auf die zuvor in diesem Leitfaden beschriebenen Verhaltensweisen angewiesen sind, empfehlen wir, den Schutz für die E-Mail-Aufzählung sofort zu aktivieren.
Wenn Ihre Anwendungen auf einem der zuvor beschriebenen Verhaltensweisen basieren, empfehlen wir, so schnell wie möglich mit der Migration zu beginnen und den Schutz der E-Mail-Aufzählung zu aktivieren.
Zusätzlich zum Schutz vor E-Mail-Aufzählungen sollten Sie Maßnahmen ergreifen, um den Missbrauch der Registrierungsendpunkte Ihres Projekts zu verhindern, die weiterhin Fehler vom Typ EMAIL_EXISTS
zurückgeben. Sie haben folgende Möglichkeiten:
- Aktivieren Sie App Check.
- Integriere reCAPTCHA in deinen Registrierungsvorgang.
- Verhindern Sie die Anmeldung mit E-Mail-Adressen und Passwörtern oder E-Mail-Links und verwenden Sie stattdessen alternative Methoden wie Google Log-in.
Schutz für E-Mail-Aufzählungen aktivieren
So aktivieren Sie den Schutz vor E-Mail-Aufzählungen:
Firebase Console
Rufen Sie in der Firebase Console die Seite Firebase Auth-Einstellungen auf.
Zu den Firebase Auth-Einstellungen
Wählen Sie im Navigationsbereich Nutzeraktionen aus.
Wählen Sie Schutz vor E-Mail-Aufzählungen (empfohlen) aus.
Klicken Sie auf Speichern.
Node.js
Installieren Sie das Admin SDK.
Sie haben folgende Möglichkeiten, den Schutz vor E-Mail-Aufzählungen zu aktivieren:
Für den Schutz auf Projektebene:
import { getAuth } from 'firebase-admin/auth'; getAuth().projectConfigManager().updateProjectConfig( { emailPrivacyConfig: { enableImprovedEmailPrivacy: true, }, } );
Für den 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ählungen aktivieren möchten.
REST
Drucken Sie in der Google Cloud Console mit dem Befehl
gcloud auth print-access-token
ein Zugriffstoken für Ihre Projekt-ID aus:gcloud auth print-access-token --project=PROJECT_ID
Aktivieren Sie den Schutz vor E-Mail-Aufzählungen 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 zuvor generierte Zugriffstoken
- PROJECT_ID: Ihre Projekt-ID.
Schutz vor E-Mail-Aufzählungen deaktivieren
So deaktivieren Sie den Schutz vor E-Mail-Aufzählungen:
Firebase Console
Rufen Sie in der Firebase Console die Seite Firebase Auth-Einstellungen auf.
Zu den Firebase Auth-Einstellungen
Wählen Sie im Navigationsbereich Nutzeraktionen aus.
Entfernen Sie das Häkchen bei Schutz vor E-Mail-Aufzählungen (empfohlen).
Klicken Sie auf Speichern.
Node.js
Installieren Sie das Admin SDK.
Sie haben folgende Möglichkeiten, den Schutz vor E-Mail-Aufzählungen zu deaktivieren:
Für den Schutz auf Projektebene:
import { getAuth } from 'firebase-admin/auth'; getAuth().projectConfigManager().updateProjectConfig( { emailPrivacyConfig: { enableImprovedEmailPrivacy: false, }, } );
Für den 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 E-Mail-Aufzählungen deaktivieren möchten.
REST
Drucken Sie in der Google Cloud Console mit dem Befehl
gcloud auth print-access-token
ein Zugriffstoken für Ihre Projekt-ID aus:gcloud auth print-access-token --project=PROJECT_ID
Deaktivieren Sie den Schutz vor E-Mail-Aufzählungen mit der Identity Toolkit API:
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 zuvor generierte Zugriffstoken
- 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 bereits im System vorhandenen E-Mail-Adresse zu registrieren, gibt Identity Platform einen Fehler wie den folgenden zurück:
{
"code": "auth/internal-error",
"message": "{\"error\":{\"code\":400,\"message\":\"INVALID_LOGIN_CREDENTIALS\",\"errors\":[{\"message\":\"INVALID_LOGIN_CREDENTIALS\",\"domain\":\"global\",\"reason\":\"invalid\"}]}}"
}