启用电子邮件枚举保护
本指南介绍了如何启用电子邮件枚举保护。
概览
电子邮件枚举是一种暴力破解攻击,即恶意行为者尝试向 API 传递电子邮件地址并检查响应,从而猜测或确认系统中的用户。
在下面的示例中,电子邮件枚举保护已停用。Identity Platform 会返回可用于电子邮件枚举攻击的信息:
尝试使用系统中不存在的电子邮件地址登录。Identity Platform 会返回
EMAIL_NOT_FOUND
错误。尝试使用系统中已存在的电子邮件地址进行注册。Identity Platform 会返回
EMAIL_EXISTS
错误。
您可以使用 Identity Platform 的电子邮件枚举保护功能保护您应用中的用户帐号,防范这类攻击。电子邮件枚举保护提供以下功能:
- 登录和注册请求无效会返回
INVALID_LOGIN_CREDENTIALS
错误响应。 - 移除电子邮件验证流程的错误响应。如果该电子邮件地址存在,系统会发送一封验证邮件。如果没有,则系统不会发送验证邮件。
- 禁止用户在不验证新地址的情况下更改电子邮件地址。
- 禁止在调用
createAuthUri
时列出指定电子邮件地址的登录方法。
启用电子邮件枚举保护
如需启用电子邮件枚举保护,请按以下步骤操作:
在 Google Cloud 控制台中,使用
gcloud auth print-access-token
命令输出项目 ID 的访问令牌:gcloud auth print-access-token --project=PROJECT_ID
使用 Identity Toolkit API 为项目 ID 启用电子邮件枚举保护:
curl -X PATCH -d "{'email_privacy_config':{'enable_improved_email_privacy':"true"}}" \ -H 'Authorization: Bearer ACCESS_TOKEN' \ -H 'Content-Type: application/json' \ "https://identitytoolkit.googleapis.com/admin/v2/projects/PROJECT_ID/config?updateMask=email_privacy_config"
请替换以下内容:
- ACCESS_TOKEN:您之前生成的访问令牌
- PROJECT_ID:您的项目 ID
停用电子邮件枚举保护
要停用电子邮件枚举保护,请按以下步骤操作:
在 Google Cloud 控制台中,使用
gcloud auth print-access-token
命令输出项目 ID 的访问令牌:gcloud auth print-access-token --project=PROJECT_ID
使用 Identity Toolkit API 停用电子邮件枚举保护:
curl -X PATCH -d "{'email_privacy_config':{'enable_improved_email_privacy':"false"}}" \ -H 'Authorization: Bearer ACCESS_TOKEN' \ -H 'Content-Type: application/json' \ "https://identitytoolkit.googleapis.com/admin/v2/projects/PROJECT_ID/config?updateMask=email_privacy_config"
请替换以下内容:
- ACCESS_TOKEN:您之前生成的访问令牌
- PROJECT_ID:您的项目 ID
错误响应示例
如果用户尝试使用错误的电子邮件地址或密码登录,或尝试使用系统中已存在的电子邮件地址进行注册,Identity Platform 将返回类似于以下内容的错误:
{
"code": "auth/internal-error",
"message": "{\"error\":{\"code\":400,\"message\":\"INVALID_LOGIN_CREDENTIALS\",\"errors\":[{\"message\":\"INVALID_LOGIN_CREDENTIALS\",\"domain\":\"global\",\"reason\":\"invalid\"}]}}"
}