使用短信区域来保护您的应用免遭短信滥用

本指南介绍了如何使用短信区域限制 Identity Platform 短信验证的使用情况,以及如何查看使用情况指标。

短信区域概览

短信区域是 Identity Platform 的一项功能,可用于保护您的应用免遭短信滥用。

短信滥用通常是指恶意行为者诱使服务通过与其签订了收益分成协议的运营商发送短信。滥用短信可能会导致费用增加,并损害您产品在客户中的声誉。

由于 Identity Platform 允许使用短信进行手机授权,因此可能会出现短信滥用行为。

借助“短信区域”功能,您可以设置哪些地区可以接收短信手机授权。

该功能提供以下功能:

  • 用于设置短信区域政策的 Firebase 控制台界面。
  • 用于设置短信区域政策的 API。
  • 可帮助您确定是否使用短信区域政策的指标。

设置区域政策

本部分介绍了 Identity Platform 区域政策。您可以设置以下类型的政策,且只能启用其中一种:

  • 仅限许可名单:只有您在许可名单中指定的区域可以接收手机授权请求。
  • 仅限拒绝名单:除您在拒绝名单中指定的地区外,所有区域都可以接收手机授权请求。

您更改配置后,系统会立即开始强制执行该政策。它会根据手机号码的区域代码,屏蔽来自政策禁止的区域的手机授权请求。

仅限许可名单的政策

如需设置仅限许可名单的政策,请按以下步骤操作:

Firebase 控制台

  1. 在 Firebase 控制台中,前往 Firebase Auth 设置页面。

    前往 Firebase Authentication 设置

    1. 在导航窗格中,选择区域

    2. 选择允许

    3. 点击选择地区

  2. 请仅添加您希望发送短信的区域。不在列表中的地区将被屏蔽。

  3. 点击保存

    您可以配置许可名单或禁止名单,但不能同时配置这两者。这样做会覆盖之前的所有配置。

Identity Toolkit API

  1. 如需在 Google Cloud 控制台中输出项目的访问令牌,请运行以下命令:

    gcloud auth print-access-token --project=PROJECT_ID
    
  2. 使用 Identity Toolkit API 更新项目配置,以添加新政策:

    curl -X PATCH -d "{'sms_region_config':{'allowlist_only':{'allowed_regions':['REGION_LIST']}}}" \
    -H 'Authorization: Bearer ACCESS_TOKEN' \
    -H 'Content-Type: application/json' \
    'https://identitytoolkit.googleapis.com/admin/v2/projects/PROJECT_ID/config?updateMask=sms_region_config'
    

替换以下内容:

  • ACCESS_TOKEN:您之前生成的访问令牌。
  • REGION_LIST:一个或多个区域,例如 INUS
  • PROJECT_ID:您的项目 ID。

您必须提供更新掩码,以防止更改其他字段。

仅限拒绝名单的政策

如需设置仅限拒绝名单的政策,请按以下步骤操作:

Firebase 控制台

  1. 在 Firebase 控制台中,前往 Firebase Auth 设置页面,然后在导航窗格中选择区域

    前往 Firebase Authentication 设置

    1. 选择拒绝

    2. 点击选择地区

  2. 添加您要禁止向其发送短信的所有区域。不在此列表中的地区将被允许。

  3. 点击保存

    您可以配置许可名单或禁止名单,但不能同时配置这两者。这样做会覆盖之前的所有配置。

Identity Toolkit API

  1. 如需在 Google Cloud 控制台中输出项目的访问令牌,请运行以下命令:

    gcloud auth print-access-token --project=PROJECT_ID
    
  2. 使用 Identity Toolkit API 更新项目配置,以添加新政策:

    curl -X PATCH -d "{'sms_region_config':{'denylist_only':{'disallowed_regions':['REGION_LIST']}}}" \
    -H 'Authorization: Bearer ACCESS_TOKEN' \
    -H 'Content-Type: application/json' \
    'https://identitytoolkit.googleapis.com/admin/v2/projects/PROJECT_ID/config?updateMask=sms_region_config'
    

替换以下内容:

  • ACCESS_TOKEN:您之前生成的访问令牌。
  • REGION_LIST:一个或多个区域,例如 INUS
  • PROJECT_ID:您的项目 ID。

您必须提供更新掩码,以防止其他字段发生更改。

访问地区短信使用指标

本部分介绍了如何查看短信使用指标。

如需查看指标,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往 Cloud Monitoring 中的 Metrics Explorer 页面:

    前往 Cloud Monitoring

  2. 选择以下字段:

    • identitytoolkit.googleapis.com/usage/sent_sms_count,
    • identitytoolkit.googleapis.com/usage/blocked_sms_count,以及
    • firebaseauth.googleapis.com/phone_auth/phone_verification_count.

    请注意,这些指标具有 region_code 字段。您可以使用此代码查看收到短信授权的区域。

  3. 计算特定区域的验证成功率为 verification_success_rate = phone_verification_count/sent_sms_count。通常,验证成功率高于 75% 被视为可接受。

verification_success_rate 较低可能表示存在滥用行为,尤其是在您预计没有用户的区域。通常,验证成功率低于 75% 被视为较低。

如果您怀疑存在短信滥用行为,可以设置区域政策