Schutz vor E-Mail-Enumeration aktivieren oder deaktivieren

In diesem Leitfaden wird die Funktion zum Schutz vor E-Mail-Enumeration erläutert und gezeigt, wie Sie sie aktivieren und deaktivieren. Wenn Sie Ihr Projekt am oder nach dem 15. September 2023 erstellt haben, ist der Schutz vor E-Mail-Enumeration standardmäßig aktiviert.

Übersicht

E-Mail-Enumeration ist eine Art 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 bei 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 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.

Mit der Funktion zum Schutz vor E-Mail-Enumeration von Identity Platform können Sie Nutzerkonten in Ihrer App vor diesen Angriffen schützen.

Wenn der Schutz vor E-Mail-Enumeration aktiviert ist, verhält sich Ihr Projekt so:

  • Die fetchSignInForEmail API schlägt fehl. Außerdem können anonyme authentifizierte Nutzer vor SDK-Version 22.3.0 für Android, 10.18.0 für iOS und 10.6.0 für das Web nicht mit einer E-Mail-Adresse verknüpft werden.

  • Beim Aufrufen der createAuthUri REST API oder der fetchSignInMethodsForEmail 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, nachdem sie die neue Adresse bestätigt haben. So können Sie die E-Mail-Adresse eines Nutzers beispielsweise nicht mehr mit der update REST API, der setAccountInfo REST API, oder der updateEmail Client SDK-Methode auf allen Plattformen ändern.

    Stattdessen können Sie verifyBeforeUpdateEmail für das Web und Android oder sendEmailVerification(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 linkWithCredential Client SDK-Methode auf keiner Plattform mehr mit einem EmailAuthCredential verwenden. Verwenden Sie stattdessen die REST API signUp und übergeben Sie das ID-Token des Nutzers im Feld idToken und die Felder email und password zum Verknüpfen.

  • Entfernt Fehlerantworten für E-Mail-Bestätigungsabläufe, einschließlich Abläufen, die initiiert wurden durch Aufrufen der sendOobCode REST API mit den Anfragetypen VERIFY_AND_CHANGE_EMAIL oder PASSWORD_RESET und durch Aufrufen von verifyBeforeUpdateEmail für das Web und Android, sendEmailVerification(beforeUpdatingEmail:) für iOS, oder sendPasswordResetEmail auf allen Plattformen.

    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 gibt es keine spezifischen Fehlermeldungen, die angeben, wann E-Mails nicht gesendet werden.

    Wir empfehlen, Nutzern nicht zu erlauben, sich ohne E-Mail-Bestätigungsablauf zu registrieren.

  • Bei ungültigen Anmeldefällen wird die Fehlerantwort INVALID_LOGIN_CREDENTIALS zurückgegeben. Bei ungültigen Registrierungsfällen werden weiterhin EMAIL_EXISTS-Fehler zurückgegeben. Empfehlungen finden Sie im nächsten Abschnitt.

Wenn Ihre App auf einem der Verhaltensweisen basiert, die durch den Schutz vor E-Mail-Enumeration geändert wurden, können Sie ihn deaktivieren. Dies wird jedoch langfristig nicht empfohlen. Weitere Informationen finden Sie im folgenden Abschnitt.

Sicherheitsempfehlungen

Eine der gängigsten Methoden für einen Angriff zur Kontoübernahme ist das Credential Stuffing mit Anmeldedaten, die offengelegt wurden oder leicht zu erraten sind. 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-Enumeration 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 E-Mail-Enumeration standardmäßig aktiviert. Wir empfehlen, den Schutz vor E-Mail-Enumeration aktiviert zu lassen und sich nicht auf eines der Verhaltensweisen zu verlassen, die weiter oben in diesem Leitfaden aufgeführt sind.

  • Wenn Sie Ihr Projekt vor dem 15. September 2023 erstellt haben, wird der Schutz vor E-Mail-Enumeration nicht automatisch aktiviert.

    Wenn Ihre Apps nicht auf einem der Verhaltensweisen basieren, die weiter oben in diesem Leitfaden beschrieben sind, empfehlen wir, den Schutz vor E-Mail-Enumeration sofort zu aktivieren.

    Wenn Ihre Apps auf einem der oben beschriebenen Verhaltensweisen basieren, empfehlen wir, die Migration so schnell wie möglich zu starten und den Schutz vor E-Mail-Enumeration so bald wie möglich zu aktivieren.

Zusätzlich zum Schutz vor E-Mail-Enumeration sollten Sie Maßnahmen ergreifen, um den Missbrauch der Registrierungsendpunkte Ihres Projekts zu verhindern, die weiterhin EMAIL_EXISTS-Fehler zurückgeben. Hier einige Möglichkeiten:

  • App Check aktivieren
  • reCAPTCHA in Ihren Registrierungsablauf einbinden
  • Die Anmeldung mit E-Mail-Adressen und Passwörtern oder E-Mail-Links nicht zulassen und stattdessen alternative Methoden wie die Google-Anmeldung verwenden

Schutz vor E-Mail-Enumeration aktivieren

So aktivieren Sie den Schutz vor E-Mail-Enumeration:

Firebase Console

  1. Rufen Sie in der Firebase Console die Seite Authentifizierungseinstellungen auf.

    Authentifizierungseinstellungen aufrufen

    1. Wählen Sie im Bereich Nutzerkontoverwaltung die Option Nutzeraktionen aus.

    2. Wählen Sie Schutz vor E-Mail-Enumeration (empfohlen) aus.

  2. Klicken Sie auf Speichern.

REST

  1. Geben Sie in der Google Cloud console ein Zugriffstoken für Ihre Projekt-ID mit dem gcloud auth print-access-token Befehl aus:

    gcloud auth print-access-token --project=PROJECT_ID
    
  2. Aktivieren Sie den Schutz vor E-Mail-Enumeration 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-Enumeration:

Firebase Console

  1. Rufen Sie in der Firebase Console die Seite Authentifizierungseinstellungen auf.

    Authentifizierungseinstellungen aufrufen

    1. Wählen Sie im Bereich Nutzerkontoverwaltung die Option Nutzeraktionen aus.

    2. Deaktivieren Sie Schutz vor E-Mail-Enumeration (empfohlen).

  2. Klicken Sie auf Speichern.

REST

  1. Geben Sie in der Google Cloud console ein Zugriffstoken für Ihre Projekt-ID mit dem gcloud auth print-access-token Befehl aus:

    gcloud auth print-access-token --project=PROJECT_ID
    
  2. Deaktivieren Sie den Schutz vor E-Mail-Enumeration 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 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\"}]}}"
}