Schutz vor E-Mail-Aufzählung aktivieren oder deaktivieren

In diesem Leitfaden wird die Funktion zum Schutz vor 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 vor E-Mail-Aufzählungen standardmäßig aktiviert.

Übersicht

Die E-Mail-Aufzählung 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 weitergibt und die Antwort überprüft.

Ohne Schutz vor E-Mail-Enumeration gibt die 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 Funktion zum Schutz vor E-Mail-Aufzählung 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, hat Ihr Projekt folgendes Verhalten:

  • Die fetchSignInForEmail API schlägt fehl. Die Verknüpfung von anonym authentifizierten Nutzern mit einer E-Mail-Adresse funktioniert erst ab der SDK-Version 22.3.0 für Android, 10.18.0 für iOS und 10.6.0 für das Web.

  • Wenn die createAuthUri-REST API oder die fetchSignInMethodsForEmail-Client SDK-Methode auf allen Plattformen aufgerufen wird, wird keine Liste der Anmeldemethoden für eine angegebene E-Mail-Adresse mehr zurückgegeben.

  • Nutzer können ihre E-Mail-Adresse nicht ändern, ohne die neue Adresse zuerst zu bestätigen. So können Sie beispielsweise die E-Mail-Adresse eines Nutzers nicht mehr mit der update-REST API, der setAccountInfo-REST API oder der updateEmail-Client SDK-Methode auf allen Plattformen ändern.

    Sie können stattdessen 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. Die Client SDK-Methode linkWithCredential mit einem EmailAuthCredential kann auf keiner Plattform mehr verwendet werden. Verwenden Sie stattdessen die REST API signUp und geben Sie das ID-Token des Nutzers im Feld idToken und die zu verknüpfenden Felder email und password an.

  • Fehlerantworten für E-Mail-Bestätigungsabläufe werden entfernt, z. B. solche, die durch Aufrufen der sendOobCode-REST API mit den Anfragetypen VERIFY_AND_CHANGE_EMAIL oder PASSWORD_RESET und durch Aufrufen von verifyBeforeUpdateEmail für Web und Android, sendEmailVerification(beforeUpdatingEmail:) für iOS oder sendPasswordResetEmail-Client SDK-Methoden auf allen Plattformen initiiert werden.

    Wenn Sie einen Antrag auf Passwortzurücksetzung stellen, wird nur dann eine Bestätigungs-E-Mail gesendet, wenn die E-Mail-Adresse existiert. Wenn Sie einen Antrag auf Änderung der E-Mail-Adresse stellen, wird nur dann eine Bestätigungs-E-Mail gesendet, wenn die E-Mail-Adresse noch nicht existiert. In beiden Fällen werden keine Fehlermeldungen angezeigt, wenn E-Mails nicht gesendet werden.

    Wir empfehlen, dass Sie Nutzern die Registrierung ohne E-Mail-Bestätigung nicht erlauben.

  • Bei ungültigen Anmeldevorgängen wird eine Fehlerantwort vom Typ INVALID_LOGIN_CREDENTIALS zurückgegeben. Bei ungültigen Registrierungen werden weiterhin EMAIL_EXISTS-Fehler zurückgegeben. Weitere Informationen finden Sie im nächsten Abschnitt.

Wenn Ihre App eines der durch den Schutz vor E-Mail-Aufzählungen geänderten Verhaltensweisen benötigt, können Sie ihn derzeit deaktivieren. Dies ist jedoch langfristig nicht empfehlenswert. Weitere Informationen finden Sie im folgenden Abschnitt.

Sicherheitsempfehlungen

Eine der häufigsten Methoden für einen Kontoübernahmeangriff ist der Anmeldedaten-Stuffing-Angriff, bei dem Anmeldedaten verwendet werden, die gehackt wurden oder leicht zu erraten sind. Die E-Mail-Aufzählung kann auch dazu verwendet werden, vertrauliche Informationen über Ihre Nutzer zu erhalten oder Phishing-Angriffe auf sie durchzuführen. Aus diesen Gründen empfiehlt Google, die Funktion zum Schutz vor E-Mail-Aufzählungen 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-Aufzählungen standardmäßig aktiviert. Wir empfehlen, den Schutz vor E-Mail-Aufzählungen aktiviert zu lassen und keine der oben aufgeführten Verhaltensweisen zu verwenden.

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

    Wenn Ihre Apps keines der in diesem Leitfaden beschriebenen Verhaltensweisen nutzen, empfehlen wir Ihnen, den Schutz vor E-Mail-Aufzählungen sofort zu aktivieren.

    Wenn Ihre Apps eines der oben beschriebenen Verhaltensweisen nutzen, sollten Sie damit so bald wie möglich aufhören und den Schutz vor E-Mail-Aufzählungen aktivieren.

Neben dem Schutz vor E-Mail-Aufzählungen sollten Sie Maßnahmen ergreifen, um den Missbrauch der Anmeldeendpunkte Ihres Projekts zu verhindern, die weiterhin EMAIL_EXISTS-Fehler zurückgeben. Das geht so:

  • Aktivieren Sie App Check.
  • Binden Sie reCAPTCHA in den Registrierungsvorgang ein.
  • Deaktivieren Sie die Anmeldung mit E-Mail-Adressen und Passwörtern oder E-Mail-Links und verwenden Sie stattdessen alternative Methoden wie die Anmeldung über Google.

Schutz vor E-Mail-Enumeration aktivieren

So aktivieren Sie den Schutz vor E-Mail-Aufzählungen:

Firebase Console

  1. Rufen Sie in der Firebase Console die Seite Firebase Auth-Einstellungen auf.

    Zu den Firebase Auth-Einstellungen

    1. Wählen Sie im Navigationsbereich Nutzeraktionen aus.

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

  2. Klicken Sie auf Speichern.

Node.js

  1. Installieren Sie das Admin SDK.

  2. Verwenden Sie eine der folgenden Methoden, um 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ählung aktivieren möchten.

REST

  1. 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
    
  2. 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-Enumeration deaktivieren

So deaktivieren Sie den Schutz vor E-Mail-Aufzählungen:

Firebase Console

  1. Rufen Sie in der Firebase Console die Seite Firebase Auth-Einstellungen auf.

    Zu den Firebase Auth-Einstellungen

    1. Wählen Sie im Navigationsbereich Nutzeraktionen aus.

    2. Entfernen Sie das Häkchen bei Schutz vor E-Mail-Enumeration (empfohlen).

  2. Klicken Sie auf Speichern.

Node.js

  1. Installieren Sie das Admin SDK.

  2. Verwenden Sie eine der folgenden Methoden, um 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ählung deaktivieren möchten.

REST

  1. 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
    
  2. 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 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 sich mit einer E-Mail-Adresse zu registrieren, die bereits im System vorhanden ist, gibt Identity Platform einen ähnlichen Fehler zurück:

{
"code": "auth/internal-error",
"message": "{\"error\":{\"code\":400,\"message\":\"INVALID_LOGIN_CREDENTIALS\",\"errors\":[{\"message\":\"INVALID_LOGIN_CREDENTIALS\",\"domain\":\"global\",\"reason\":\"invalid\"}]}}"
}