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

本指南介绍如何使用短信区域来限制 Identity Platform 短信验证用量并查看用量指标。

短信区域概览

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

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

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

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

该功能提供以下功能:

  • Firebase 控制台界面,供您设置短信区域政策。
  • 供您设置短信区域政策的 API。
  • 这些指标有助于您决定是否使用短信区域政策。

设置区域政策

本部分介绍 Identity Platform 区域政策。您可以设置以下类型的政策,并且只能有一项处于活跃状态:

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

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

“仅限许可名单”政策

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

Firebase 控制台

  1. 在 Firebase 控制台中,转到 Firebase Auth 设置页面。

    转到 Firebase Authentication 设置

    1. 在导航窗格中选择 SMS 区域政策

    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. 选择以下字段:

    • Identity Toolkit.googleapis.com/usage/sent_sms_count、
    • Identity Toolkit.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% 的验证成功率会被视为较低。

如果您怀疑有人滥用短信,您可以设置区域政策