使用簡訊區域功能,保護應用程式免於簡訊濫用

本指南說明如何使用簡訊區域限制 Identity Platform 簡訊驗證用量,以及查看用量指標。

簡訊區域總覽

簡訊區域是 Identity Platform 的一項功能,可用於保護應用程式免遭簡訊濫用。

簡訊濫用通常是指惡意行為人透過與其簽訂收益分享協議的電信業者,導致服務傳送簡訊。濫用簡訊可能會導致成本增加,並損害產品在消費者心中的聲譽。

由於 Identity Platform 允許透過簡訊授權電話,因此可能會發生簡訊濫用情形。

簡訊區域功能可讓你設定哪些區域可以接收簡訊電話授權。

這項功能提供以下服務:

  • Firebase 控制台介面,可供您設定簡訊區域政策。
  • 您可透過 API 設定簡訊區域政策。
  • 可做為決策依據的指標,協助您決定是否要採用簡訊區域政策。

設定區域政策

本節說明 Identity Platform 的區域政策。您可以設定下列類型的政策,但只能啟用其中一項:

  • 僅限許可清單:只有您在許可清單中指定的區域,才能接收電話授權要求。
  • 僅限拒絕清單:除了您在拒絕清單中指定的區域外,所有區域都能收到電話授權要求。

變更設定後,系統會立即開始強制執行政策。系統會根據電話號碼的區域代碼,封鎖政策禁止區域的電話授權要求。

僅限允許清單的政策

如要設定僅限許可清單的政策,請按照下列步驟操作:

Firebase 控制台

  1. 前往 Firebase 控制台的「Firebase Auth Settings」(Firebase 驗證設定) 頁面。

    前往 Firebase 驗證設定

    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 Settings」(Firebase 驗證設定) 頁面,然後在導覽窗格中選取「SMS region policy」(簡訊區域政策)

    前往 Firebase 驗證設定

    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「指標探索器」頁面:

    前往 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% 即為偏低。

如果懷疑有人濫用簡訊,可以設定區域政策