Schutz vor E-Mail-Aufzählung aktivieren oder deaktivieren
In diesem Leitfaden wird die Funktion zum Schutz vor E-Mail-Enumeration erläutert und es wird erläutert, um sie zu aktivieren und zu deaktivieren. Wenn Sie Ihr Projekt am oder nach dem 15. September erstellt haben, 2023 ist der Schutz vor E-Mail-Enumeration 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 Angriff auf E-Mail-Enumeration 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 anzumelden, die bereits im System vorhanden ist. Die Identity Platform gibt den Fehler
EMAIL_EXISTS
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 Schutz vor E-Mail-Enumeration aktiviert ist, weist Ihr Projekt folgendes Verhalten auf:
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.Beim Aufruf einer E-Mail-Adresse wird keine Liste mit Anmeldemethoden mehr zurückgegeben.
createAuthUri
REST API oderfetchSignInMethodsForEmail
client SDK-Methode auf allen Plattformen.Nutzer können ihre E-Mail-Adresse nicht ändern, ohne die neue Adresse zuerst zu bestätigen. Beispielsweise können Sie die E-Mail-Adresse mit dem
update
die REST API vonsetAccountInfo
, oder dieupdateEmail
client SDK-Methode auf allen Plattformen.Sie können 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 eine E-Mail-Adresse/ein Passwort zu verknüpfen mit einem bestehenden Nutzerkonto verknüpfen. Die Client SDK-MethodelinkWithCredential
mit einemEmailAuthCredential
kann auf keiner Plattform mehr verwendet werden. Verwenden Sie stattdessen die REST APIsignUp
und übergeben Sie das ID-Token des Nutzers im FeldidToken
sowie die zu verknüpfenden Felderemail
undpassword
.Fehlerantworten für E-Mail-Bestätigungsabläufe, z. B. bei initiierten Abläufen, werden entfernt. durch Aufrufen der Methode
sendOobCode
REST API mit den AnfragetypenVERIFY_AND_CHANGE_EMAIL
oderPASSWORD_RESET
und beim AnrufenverifyBeforeUpdateEmail
für Web und Android,sendEmailVerification(beforeUpdatingEmail:)
für iOS, odersendPasswordResetEmail
Client-SDK-Methoden auf allen Plattformen.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 werden keine spezifischen Fehlermeldungen angezeigt, die darauf hinweisen, dass E-Mails gesendet.
Nutzern die Anmeldung ohne E-Mail-Adresse nicht erlauben des Bestätigungsvorgangs.
Bei ungültigen Anmeldungen wird der Fehler
INVALID_LOGIN_CREDENTIALS
zurückgegeben. Bei ungültigen Registrierungen werden weiterhinEMAIL_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 zur Durchführung eines Angriffs auf eine Kontoübernahme ist die Sie führen Credential Stuffing-Angriffe mit gehackten oder leicht zu erfassenden Anmeldedaten aus. zu beantworten. 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 in diesem Leitfaden 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 beginnen, diese zu migrieren und so schnell wie möglich den Schutz vor E-Mail-Aufzählungen zu aktivieren.
Zusätzlich zum Schutz vor E-Mail-Enumeration sollten Sie Maßnahmen ergreifen,
Verhindern des Missbrauchs der Anmeldeendpunkte Ihres Projekts, die weiterhin zurückkehren
EMAIL_EXISTS
Fehler. 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
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-Enumeration (empfohlen) aus.
Klicken Sie auf Speichern.
Node.js
Installieren Sie das Admin SDK.
Verwenden Sie eine der folgenden Optionen, um den Schutz vor E-Mail-Enumeration 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, die Sie für den Sie den Schutz vor E-Mail-Enumeration aktivieren möchten.
REST
Geben 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-Enumeration für Ihre Projekt-ID mithilfe 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
Rufen Sie in der Firebase Console die Seite Firebase Auth-Einstellungen auf.
Zu den Firebase Auth-Einstellungen
Wählen Sie im Navigationsbereich Nutzeraktionen aus.
Deaktivieren Sie Schutz vor E-Mail-Enumeration (empfohlen).
Klicken Sie auf Speichern.
Node.js
Installieren Sie das Admin SDK.
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 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, die Sie für die der Schutz vor E-Mail-Enumeration deaktiviert werden soll.
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-Enumeration mithilfe 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 eine E-Mail-Adresse hat, die bereits im System vorhanden ist, 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\"}]}}"
}