Abilita o disabilita la protezione dall'enumerazione delle email
Questa guida illustra la funzionalità di protezione dall'enumerazione delle email e mostra come per attivarlo e disattivarlo. Se hai creato il progetto a partire dal 15 settembre 2023, la protezione dall'enumerazione email è attiva per impostazione predefinita.
Panoramica
L'enumerazione email è un tipo di attacco di forza bruta in cui un attore malintenzionato tenta di indovinare o confermare gli utenti di un sistema passando un indirizzo email all'API e controllando la risposta.
Senza la protezione dall'enumerazione delle email, Identity Platform restituisce informazioni che possono essere utilizzate in un attacco di enumerazione delle email:
Viene tentato di accedere con un indirizzo email che non esiste nel sistema. Identity Platform restituisce un errore
EMAIL_NOT_FOUND
.Viene effettuato un tentativo di registrazione con un indirizzo email già esistente nel sistema. Identity Platform restituisce un errore
EMAIL_EXISTS
.
Puoi utilizzare la funzionalità di protezione dall'enumerazione email di Identity Platform per proteggere gli account utente nella tua app da questi attacchi.
Quando la protezione dall'enumerazione delle email abilitata, il tuo progetto avrà il seguente comportamento:
L'API
fetchSignInForEmail
non andrà a buon fine. Anche il collegamento degli utenti autenticati anonimi a un indirizzo email non funzionerà prima della versione 22.3.0 dell'SDK per Android, 10.18.0 per iOS e 10.6.0 per il web.Durante la chiamata non viene più restituito un elenco di metodi di accesso per un indirizzo email specificato
createAuthUri
l'API REST ofetchSignInMethodsForEmail
il metodo SDK client su tutte le piattaforme.Gli utenti non possono cambiare il proprio indirizzo email senza prima verificando il nuovo indirizzo. Ad esempio, non puoi più modificare indirizzo email con il
update
l'API REST, l'API RESTsetAccountInfo
, oupdateEmail
il metodo SDK client su tutte le piattaforme.Puoi utilizzare
verifyBeforeUpdateEmail
per il web e Android oppuresendEmailVerification(beforeUpdatingEmail:)
per iOS .Non puoi più utilizzare l'API REST
setAccountInfo
per collegare un'email/una password a un account utente esistente. Non puoi più utilizzare il metodo SDK clientlinkWithCredential
con unEmailAuthCredential
su nessuna piattaforma. Utilizza l'API RESTsignUp
, passando il token ID dell'utente nel campoidToken
e i campiemail
,password
da collegare.Rimuove le risposte di errore per i flussi di verifica email, ad esempio quelli avviati chiamando l'API REST
sendOobCode
con tipi di richiestaVERIFY_AND_CHANGE_EMAIL
oPASSWORD_RESET
e quando si chiamaverifyBeforeUpdateEmail
per web e Android,sendEmailVerification(beforeUpdatingEmail:)
per iOS o metodi SDK clientsendPasswordResetEmail
su tutte le piattaforme.Quando effettui una richiesta di reimpostazione della password, l'email di verifica viene inviata solo se l'indirizzo email esiste; Quando effettui una richiesta di modifica dell'indirizzo email, l'email di verifica viene inviata solo se l'indirizzo email non esiste già. Nella In entrambi i casi, non vengono visualizzati messaggi di errore specifici che indicano la mancata inviate.
Ti consigliamo di non consentire agli utenti di registrarsi senza un indirizzo email flusso di verifica.
I casi di accesso non validi restituiscono una risposta di errore
INVALID_LOGIN_CREDENTIALS
. I casi di registrazione non validi continuano a restituire erroriEMAIL_EXISTS
. Consulta i consigli nella sezione successiva.
Se la tua app si basa su uno dei comportamenti modificati dalla protezione per l'enumerazione email, al momento puoi disattivarla. Tuttavia, questa operazione non è consigliata a lungo termine; consulta la sezione seguente.
Suggerimenti sulla sicurezza
Uno dei metodi più comuni per eseguire un attacco di acquisizione di account è quello di attacchi di credential stuffing utilizzando credenziali divulgate o facili da indovinare. L'enumerazione delle email può essere utilizzata anche per ottenere informazioni sensibili sui tuoi utenti o per eseguire attacchi di phishing contro di loro. Per questi motivi, Google consiglia di utilizzare la funzionalità di protezione dall'enumerazione delle email per proteggere le tue app da questi attacchi.
Se hai creato il progetto a partire dal 15 settembre 2023, la protezione dall'enumerazione email è attiva per impostazione predefinita. Ti consigliamo di lasciare un'email protezione dall'enumerazione abilitata ed evitare di basarsi su qualsiasi comportamento elencati in precedenza in questa guida.
Se hai creato il progetto prima del 15 settembre 2023, la protezione dall'enumerazione email non viene attivata automaticamente.
Se le tue app non si basano su nessuno dei comportamenti descritti in precedenza ti consigliamo di attivare immediatamente la protezione dall'enumerazione delle email.
Se le tue app si basano su uno dei comportamenti descritti in precedenza, ti consigliamo di: avviare la migrazione e abilitare l'enumerazione delle email il prima possibile.
Oltre a utilizzare la protezione dall'enumerazione delle email, valuta la possibilità di adottare misure per
prevenire l'abuso degli endpoint di registrazione del progetto che continuano a restituire
EMAIL_EXISTS
errore. Ecco alcuni modi per farlo:
- Attiva App Check.
- Integra reCAPTCHA nella tua registrazione flusso di lavoro.
- Non consentire l'accesso con indirizzi email e password o link email e utilizza metodi alternativi, come Accedi con Google.
Abilita la protezione da enumerazione delle email
Per attivare la protezione dall'enumerazione delle email, segui questi passaggi:
Console Firebase
Nella Console Firebase, vai alla pagina Impostazioni di autenticazione Firebase.
Vai alle impostazioni di Firebase Auth
Nel riquadro di navigazione, seleziona Azioni utente.
Seleziona Protezione da enumerazione email (consigliata).
Fai clic su Salva.
Node.js
Installa l'SDK Admin.
Per abilitare la protezione dall'enumerazione delle email, utilizza una delle seguenti opzioni:
Per la protezione a livello di progetto:
import { getAuth } from 'firebase-admin/auth'; getAuth().projectConfigManager().updateProjectConfig( { emailPrivacyConfig: { enableImprovedEmailPrivacy: true, }, } );
Per la protezione a livello di tenant:
import { getAuth } from 'firebase-admin/auth'; getAuth().tenantConfigManager().updateTenant(TENANT_ID, { emailPrivacyConfig: { enableImprovedEmailPrivacy: true, }, } );
Sostituisci
TENANT_ID
con l'ID tenant per cui vuoi attivare la protezione dall'enumerazione email.
REST
Nella console Google Cloud, stampa un token di accesso per l'ID progetto utilizzando il comando
gcloud auth print-access-token
:gcloud auth print-access-token --project=PROJECT_ID
Attiva la protezione dell'enumerazione email per l'ID progetto utilizzando 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"
Sostituisci quanto segue:
- ACCESS_TOKEN: il token di accesso generato in precedenza
- PROJECT_ID: il tuo ID progetto
Disattivare la protezione di enumerazione email
Per disattivare la protezione di enumerazione delle email:
Console Firebase
Nella Console Firebase, vai alla pagina Impostazioni di autenticazione Firebase.
Vai alle impostazioni di Firebase Auth
Nel riquadro di navigazione, seleziona Azioni utente.
Deseleziona Protezione da enumerazione email (consigliata).
Fai clic su Salva.
Node.js
Installa l'SDK Admin.
Per disabilitare la protezione dall'enumerazione delle email, utilizza una delle seguenti opzioni:
Per la protezione a livello di progetto:
import { getAuth } from 'firebase-admin/auth'; getAuth().projectConfigManager().updateProjectConfig( { emailPrivacyConfig: { enableImprovedEmailPrivacy: false, }, } );
Per la protezione a livello di tenant:
import { getAuth } from 'firebase-admin/auth'; getAuth().tenantConfigManager().updateTenant(TENANT_ID, { emailPrivacyConfig: { enableImprovedEmailPrivacy: false, }, } );
Sostituisci
TENANT_ID
con l'ID tenant che hai per cui vuoi disabilitare la protezione dall'enumerazione delle email.
REST
Nella console Google Cloud, stampa un token di accesso per l'ID progetto utilizzando il comando
gcloud auth print-access-token
:gcloud auth print-access-token --project=PROJECT_ID
Disattiva la protezione dell'enumerazione email utilizzando 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"
Sostituisci quanto segue:
- ACCESS_TOKEN: il token di accesso generato in precedenza
- PROJECT_ID: il tuo ID progetto
Esempio di risposta di errore
Se un utente tenta di accedere con un indirizzo email o una password errati o di registrarsi con un indirizzo email che esiste già nel sistema, Identity Platform restituisce un errore simile al seguente:
{
"code": "auth/internal-error",
"message": "{\"error\":{\"code\":400,\"message\":\"INVALID_LOGIN_CREDENTIALS\",\"errors\":[{\"message\":\"INVALID_LOGIN_CREDENTIALS\",\"domain\":\"global\",\"reason\":\"invalid\"}]}}"
}