Attiva o disattiva la protezione dell'enumerazione delle email
Questa guida illustra la funzionalità di protezione dell'enumerazione delle email e spiega come abilitarla e disattivarla. Se hai creato il progetto a partire dal 15 settembre 2023, la protezione dell'enumerazione delle email è abilitata per impostazione predefinita.
Panoramica
L'enumerazione delle email è un tipo di attacco di forza bruta in cui un utente malintenzionato tenta di indovinare o confermare gli utenti in un sistema passando un indirizzo email all'API e controllando la risposta.
Senza la protezione dell'enumerazione email, Identity Platform restituisce informazioni che possono essere utilizzate in un attacco di enumerazione email:
Viene eseguito un tentativo di accesso con un indirizzo email che non esiste nel sistema. Identity Platform restituisce un errore
EMAIL_NOT_FOUND
.Viene eseguito 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 dell'enumerazione delle email di Identity Platform per proteggere gli account utente nella tua app da questi attacchi.
Quando la protezione dell'enumerazione delle email è abilitata, il progetto ha il seguente comportamento:
L'API
fetchSignInForEmail
non funzionerà. Anche il collegamento di utenti autenticati anonimi con un indirizzo email non funzionerà prima delle versioni dell'SDK 22.3.0 per Android, 10.18.0 per iOS e 10.6.0 per il web.Un elenco di metodi di accesso per un indirizzo email specificato non viene più restituito quando chiami l'API REST
createAuthUri
o il metodo SDK clientfetchSignInMethodsForEmail
su tutte le piattaforme.Gli utenti non possono cambiare il proprio indirizzo email senza prima verificare il nuovo indirizzo. Ad esempio, non puoi più modificare l'indirizzo email di un utente con l'API REST
update
, l'API RESTsetAccountInfo
o il metodo SDK clientupdateEmail
su tutte le piattaforme.Puoi utilizzare
verifyBeforeUpdateEmail
per il web e Android osendEmailVerification(beforeUpdatingEmail:)
per iOS.Non puoi più utilizzare l'API REST di
setAccountInfo
per collegare un provider email/password a un account utente esistente. Non puoi più utilizzare il metodo SDK clientlinkWithCredential
con unEmailAuthCredential
su qualsiasi piattaforma. Utilizza invece l'API RESTsignUp
, passando il token ID dell'utente nel campoidToken
e nei campiemail
,password
da collegare.Rimuove le risposte di errore per i flussi di verifica email, come quelli avviati chiamando l'API REST
sendOobCode
con i tipi di richiestaVERIFY_AND_CHANGE_EMAIL
oPASSWORD_RESET
, e quando chiamiverifyBeforeUpdateEmail
per Web e Android,sendEmailVerification(beforeUpdatingEmail:)
per iOS osendPasswordResetEmail
i metodi SDK client su tutte le piattaforme.Quando effettui una richiesta di reimpostazione della password, viene inviata un'email di verifica solo se l'indirizzo email esiste; quando effettui una richiesta di modifica dell'indirizzo email, viene inviata un'email di verifica solo se l'indirizzo email non esiste già. In entrambi i casi, non sono disponibili messaggi di errore specifici che indicano quando le email non vengono inviate.
Ti consigliamo di non consentire agli utenti di registrarsi senza un flusso di verifica email.
I casi di accesso non validi restituiscono una risposta di errore
INVALID_LOGIN_CREDENTIALS
. Le richieste di registrazione non valide continuano a restituireEMAIL_EXISTS
errori. Leggi i consigli nella sezione successiva.
Se la tua app si basa su uno qualsiasi dei comportamenti modificati dalla protezione dell'enumerazione delle email, al momento puoi disattivarla. Tuttavia, questa soluzione non è consigliata nel lungo termine; consulta la sezione seguente.
Suggerimenti sulla sicurezza
Uno dei metodi più comuni per eseguire un attacco con violazione dell'account è eseguire attacchi che riempiono le credenziali utilizzando credenziali che sono divulgate o facili da indovinare. L'enumerazione delle email può essere utilizzata anche per ottenere informazioni sensibili sugli utenti o per eseguire attacchi di phishing contro di loro. Per questi motivi, Google consiglia di utilizzare la funzionalità di protezione dell'enumerazione delle email per proteggere le app da questi attacchi.
Se hai creato il progetto a partire dal 15 settembre 2023, la protezione dell'enumerazione delle email è abilitata per impostazione predefinita. Ti consigliamo di lasciare attivata la protezione per l'enumerazione delle email e di evitare di fare affidamento sui comportamenti elencati in precedenza in questa guida.
Se hai creato il progetto prima del 15 settembre 2023, la protezione dell'enumerazione delle email non viene attivata automaticamente.
Se le tue app non si basano su nessuno dei comportamenti descritti in precedenza in questa guida, ti consigliamo di attivare immediatamente la protezione dell'enumerazione delle email.
Se le tue app si basano su uno qualsiasi dei comportamenti descritti in precedenza, ti consigliamo di abbandonare la migrazione e di attivare la protezione dell'enumerazione delle email il prima possibile.
Oltre a utilizzare la protezione dell'enumerazione delle email, prendi in considerazione l'adozione di misure per prevenire l'abuso degli endpoint di registrazione del progetto che continuano a restituire errori EMAIL_EXISTS
. Ecco alcuni modi per farlo:
- Attiva App Check.
- Integra reCAPTCHA nel flusso di registrazione.
- Non consentire l'accesso con indirizzi email, password o link email e usa invece metodi alternativi, come Accedi con Google.
Attiva la protezione dell'enumerazione delle email
Per attivare la protezione dell'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 dell'enumerazione email (consigliata).
Fai clic su Salva.
Node.js
Installa l'SDK Admin.
Per abilitare la protezione dell'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 abilitare la protezione dell'enumerazione delle email.
REST
Nella console Google Cloud, stampa un token di accesso per il tuo ID progetto utilizzando il comando
gcloud auth print-access-token
:gcloud auth print-access-token --project=PROJECT_ID
Attiva la protezione dell'enumerazione delle email per il tuo 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: l'ID progetto
Disattiva la protezione dell'enumerazione email
Per disattivare la protezione dell'enumerazione delle email, procedi nel seguente modo:
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 dell'enumerazione email (consigliata).
Fai clic su Salva.
Node.js
Installa l'SDK Admin.
Per disattivare la protezione dell'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 per cui vuoi disabilitare la protezione dell'enumerazione email.
REST
Nella console Google Cloud, stampa un token di accesso per il tuo ID progetto utilizzando il comando
gcloud auth print-access-token
:gcloud auth print-access-token --project=PROJECT_ID
Disattiva la protezione dell'enumerazione delle 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: l'ID progetto
Esempio di risposta di errore
Se un utente tenta di accedere con un indirizzo email o una password errati oppure tenta di registrarsi con un indirizzo email già esistente 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\"}]}}"
}