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

本指南介绍如何使用短信区域来限制 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 设置页面,然后在导航窗格中选择 SMS 区域

    前往 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':{'allow_by_default':{'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% 即被视为较低。

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