Activer ou désactiver la protection contre l'énumération des adresses e-mail
Ce guide décrit la fonctionnalité de protection contre l'énumération des e-mails, et vous explique comment l'activer et la désactiver. Si vous avez créé votre projet le 15 septembre 2023 ou après, la protection contre l'énumération des adresses e-mail est activée par défaut.
Présentation
L'énumération par e-mail est un type d'attaque par force brute dans lequel un acteur malveillant tente de deviner ou de confirmer des utilisateurs dans un système en transmettant une adresse e-mail à l'API et en vérifiant la réponse.
Sans protection contre l'énumération des adresses e-mail, Identity Platform affiche des informations pouvant être utilisées dans une attaque par énumération d'adresses e-mail:
Tentative de connexion avec une adresse e-mail qui n'existe pas dans le système. Identity Platform renvoie une erreur
EMAIL_NOT_FOUND
.Tentative d'inscription avec une adresse e-mail déjà enregistrée dans le système. Identity Platform renvoie une erreur
EMAIL_EXISTS
.
Vous pouvez utiliser la fonctionnalité de protection contre l'énumération des e-mails d'Identity Platform pour protéger les comptes utilisateur de votre application contre ces attaques.
Lorsque la protection contre l'énumération des adresses e-mail est activée, votre projet présente le comportement suivant:
L'API
fetchSignInForEmail
échouera. L'association d'utilisateurs authentifiés anonymes avec une adresse e-mail ne fonctionnera pas non plus avec les SDK 22.3.0 pour Android, 10.18.0 pour iOS et 10.6.0 pour le Web.La liste des méthodes de connexion pour une adresse e-mail spécifiée n'est plus renvoyée lors de l'appel de l'API REST
createAuthUri
ou de la méthode du SDK clientfetchSignInMethodsForEmail
sur toutes les plates-formes.Les utilisateurs ne peuvent pas modifier leur adresse e-mail sans avoir préalablement validé la nouvelle adresse. Par exemple, vous ne pouvez plus modifier l'adresse e-mail d'un utilisateur avec l'API REST
update
, l'API RESTsetAccountInfo
ou la méthode SDK clientupdateEmail
sur toutes les plates-formes.Vous pouvez utiliser
verifyBeforeUpdateEmail
à la place.Vous ne pouvez plus utiliser l'API REST
setAccountInfo
pour associer un fournisseur d'adresse e-mail/de mot de passe à un compte utilisateur existant. Vous ne pouvez plus utiliser la méthode du SDK clientlinkWithCredential
avec unEmailAuthCredential
sur n'importe quelle plate-forme. Utilisez plutôt l'API RESTsignUp
, en transmettant le jeton d'ID de l'utilisateur dans le champidToken
et les champsemail
etpassword
à associer.Suppression des réponses d'erreur pour les flux de validation des adresses e-mail, tels que ceux initiés en appelant l'API REST
sendOobCode
avec les types de requêtesVERIFY_AND_CHANGE_EMAIL
ouPASSWORD_RESET
, et lors de l'appel des méthodes du SDK clientverifyBeforeUpdateEmail
ousendPasswordResetEmail
sur toutes les plates-formes.Lorsque vous effectuez une demande de réinitialisation de mot de passe, un e-mail de validation n'est envoyé que si l'adresse e-mail existe. Lorsque vous effectuez une demande de changement d'adresse e-mail, un e-mail de validation n'est envoyé que si l'adresse e-mail n'existe pas déjà. Dans les deux cas, aucun message d'erreur spécifique n'indique quand les e-mails ne sont pas envoyés.
Nous vous recommandons de ne pas autoriser les utilisateurs à s'inscrire sans une procédure de validation de l'adresse e-mail.
Les demandes de connexion non valides renvoient une erreur
INVALID_LOGIN_CREDENTIALS
. Les demandes d'inscription non valides continuent de renvoyer des erreursEMAIL_EXISTS
. Consultez les recommandations dans la section suivante.
Si votre application repose sur l'un des comportements modifiés par la protection contre l'énumération des adresses e-mail, vous pouvez actuellement la désactiver. Toutefois, cela n'est pas recommandé à long terme (consultez la section suivante).
Recommandations pour améliorer la sécurité
L'une des méthodes les plus courantes pour effectuer une attaque par piratage de compte consiste à effectuer des attaques par accumulation d'identifiants à l'aide d'identifiants divulgués ou faciles à deviner. L'énumération des adresses e-mail peut également être utilisée pour obtenir des informations sensibles sur vos utilisateurs ou pour effectuer des attaques d'hameçonnage à leur encontre. Pour ces raisons, Google recommande d'utiliser la fonctionnalité de protection contre l'énumération des e-mails afin de protéger vos applications contre de telles attaques.
Si vous avez créé votre projet le 15 septembre 2023 ou après, la protection contre l'énumération des e-mails est activée par défaut. Nous vous recommandons de laisser la protection contre l'énumération des adresses e-mail activée et de ne pas vous appuyer sur l'un des comportements énumérés précédemment dans ce guide.
Si vous avez créé votre projet avant le 15 septembre 2023, la protection contre l'énumération des adresses e-mail n'est pas automatiquement activée.
Si vos applications ne reposent sur aucun des comportements décrits précédemment dans ce guide, nous vous recommandons d'activer immédiatement la protection contre l'énumération des e-mails.
Si vos applications reposent sur l'un des comportements décrits précédemment, nous vous recommandons de commencer à ne plus le faire et d'activer la protection contre l'énumération des e-mails dès que possible.
En plus d'utiliser la protection contre l'énumération des adresses e-mail, envisagez de prendre des mesures pour éviter toute utilisation abusive des points de terminaison d'inscription de votre projet qui continuent de renvoyer des erreurs EMAIL_EXISTS
. Pour ce faire, procédez comme suit:
- Activez App Check.
- Intégrez reCAPTCHA dans votre processus d'inscription.
- Interdisez la connexion avec des adresses e-mail, des mots de passe ou des liens d'e-mail, et utilisez plutôt d'autres méthodes, telles que Google Sign-In.
Activer la protection contre l'énumération des adresses e-mail
Pour activer la protection contre l'énumération des adresses e-mail, procédez comme suit:
Console Firebase
Dans la console Firebase, accédez à la page Paramètres d'authentification Firebase.
Accéder aux paramètres d'authentification Firebase
Dans le volet de navigation, sélectionnez Actions de l'utilisateur.
Sélectionnez Protection contre l'énumération des e-mails (recommandé).
Cliquez sur Enregistrer.
Node.js
Installez le SDK Admin.
Pour activer la protection contre l'énumération des adresses e-mail, utilisez l'une des options suivantes:
Pour une protection au niveau du projet:
import { getAuth } from 'firebase-admin/auth'; getAuth().projectConfigManager().updateProjectConfig( { emailPrivacyConfig: { enableImprovedEmailPrivacy: true, }, } );
Pour la protection au niveau du locataire:
import { getAuth } from 'firebase-admin/auth'; getAuth().tenantConfigManager().updateTenant(TENANT_ID, { emailPrivacyConfig: { enableImprovedEmailPrivacy: true, }, } );
Remplacez
TENANT_ID
par l'ID du locataire pour lequel vous souhaitez activer la protection contre l'énumération des e-mails.
REST
Dans la console Google Cloud, imprimez un jeton d'accès pour votre ID de projet à l'aide de la commande
gcloud auth print-access-token
:gcloud auth print-access-token --project=PROJECT_ID
Activez la protection contre l'énumération des adresses e-mail pour votre ID de projet à l'aide de l'API Identity Toolkit:
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"
Remplacez les éléments suivants :
- ACCESS_TOKEN: jeton d'accès que vous avez généré précédemment
- PROJECT_ID : ID de votre projet.
Désactiver la protection contre l'énumération des adresses e-mail
Pour désactiver la protection contre l'énumération des adresses e-mail, procédez comme suit:
Console Firebase
Dans la console Firebase, accédez à la page Paramètres d'authentification Firebase.
Accéder aux paramètres d'authentification Firebase
Dans le volet de navigation, sélectionnez Actions de l'utilisateur.
Désactivez l'option Protection contre l'énumération des e-mails (recommandé).
Cliquez sur Enregistrer.
Node.js
Installez le SDK Admin.
Pour désactiver la protection contre l'énumération des adresses e-mail, utilisez l'une des méthodes suivantes:
Pour une protection au niveau du projet:
import { getAuth } from 'firebase-admin/auth'; getAuth().projectConfigManager().updateProjectConfig( { emailPrivacyConfig: { enableImprovedEmailPrivacy: false, }, } );
Pour la protection au niveau du locataire:
import { getAuth } from 'firebase-admin/auth'; getAuth().tenantConfigManager().updateTenant(TENANT_ID, { emailPrivacyConfig: { enableImprovedEmailPrivacy: false, }, } );
Remplacez
TENANT_ID
par l'ID du locataire pour lequel vous souhaitez désactiver la protection contre l'énumération des adresses e-mail.
REST
Dans la console Google Cloud, imprimez un jeton d'accès pour votre ID de projet à l'aide de la commande
gcloud auth print-access-token
:gcloud auth print-access-token --project=PROJECT_ID
Désactivez la protection contre l'énumération des e-mails à l'aide de l'API Identity Toolkit:
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"
Remplacez les éléments suivants :
- ACCESS_TOKEN: jeton d'accès que vous avez généré précédemment
- PROJECT_ID : ID de votre projet.
Exemple de réponse d'erreur
Si un utilisateur tente de se connecter avec une adresse e-mail ou un mot de passe incorrects, ou tente de s'inscrire avec une adresse e-mail déjà présente dans le système, Identity Platform renvoie une erreur semblable à la suivante:
{
"code": "auth/internal-error",
"message": "{\"error\":{\"code\":400,\"message\":\"INVALID_LOGIN_CREDENTIALS\",\"errors\":[{\"message\":\"INVALID_LOGIN_CREDENTIALS\",\"domain\":\"global\",\"reason\":\"invalid\"}]}}"
}