為簡訊驗證啟用 reCAPTCHA SMS Defense
本文說明如何使用 reCAPTCHA SMS Defense,保護 Identity Platform 簡訊流程 (例如手機和多重驗證),以免遭受簡訊話費詐欺 (又稱為垃圾簡訊攻擊)。這項整合功能可防止未經授權的簡訊流量對使用者和資源造成負面影響。
總覽
如果應用程式仰賴簡訊進行驗證,建議啟用 reCAPTCHA SMS Defense 整合功能。啟用後,只要使用者透過應用程式或網站,使用下列 phoneProvider 作業要求驗證簡訊,Firebase 驗證和 Identity Platform 就會自動叫用 reCAPTCHA SMS Defense 功能:
| 作業 | 方法 | |
|---|---|---|
| 使用電話號碼註冊或登入 | sendVerificationCode |
|
| 註冊多重驗證電話號碼 | mfaSmsEnrollment |
|
| 使用多重驗證電話號碼登入 | mfaSmsSignIn |
接著,reCAPTCHA 會向 Firebase Authentication 或 Identity Platform 提供風險分數,指出使用者電話號碼發生簡訊費用詐欺的可能性。接著,系統會將這個分數與您設定的門檻進行比較。如果使用者要求通過話費詐欺評估,系統就會傳送簡訊驗證碼。如果風險評分超過設定的門檻,Identity Platform 會封鎖要求,且不會傳送含有驗證碼的簡訊。
啟用 reCAPTCHA SMS defense 後,就不需要備用驗證,也不必為應用程式設定任何其他驗證方法。不過,建議您為網頁應用程式設定 reCAPTCHA 驗證工具,確保在您決定停用 reCAPTCHA SMS defense 時,reCAPTCHA v2 仍可使用。
如要瞭解 reCAPTCHA SMS Defense 分數的運作方式,請參閱「解讀分數」。
如要進一步瞭解 reCAPTCHA SMS Defense 功能,請參閱「偵測及防範簡訊詐欺」。
事前準備
為 Identity Platform 啟用 reCAPTCHA SMS defense 前,請先完成下列工作:
請視情況為應用程式或網站進行下列設定:
視情況為應用程式或網站設定 Firebase 驗證:
啟用 reCAPTCHA SMS Defense
設定驗證方法:
-
在 Google Cloud 控制台啟用 Cloud Shell。
建立服務身分:
gcloud beta services identity create \ --service=identitytoolkit.googleapis.com \ --project=PROJECT_ID將
PROJECT_ID替換為專案 ID。將
roles/identitytoolkit.serviceAgent角色授予您建立的服務身分。gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-identitytoolkit.iam.gserviceaccount.com \ --role=roles/identitytoolkit.serviceAgent更改下列內容:
PROJECT_ID:專案 IDPROJECT_NUMBER:專案帳號
-
為專案啟用 reCAPTCHA SMS defense:
前往 Google Cloud 控制台的「reCAPTCHA」頁面。
確認專案名稱顯示在資源選取器中。
如果找不到專案名稱,請按一下資源選取器,然後選取專案。
按一下「設定」。
在「SMS Defense」窗格中,按一下「設定」。
按一下「啟用」切換鈕,然後點選「儲存」。
啟用 reCAPTCHA SMS defense 時,系統也會一併啟用帳戶防護工具 (如果尚未啟用)。
reCAPTCHA SMS defense 啟用作業可能需要幾分鐘,才會在系統中生效。生效後,您就會開始收到與 reCAPTCHA SMS Defense 相關的回應,做為評估的一部分。
如要為 Firebase 驗證或 Identity Platform 專案設定 reCAPTCHA SMS Defense,請按照下列步驟操作:
在下列網址中,替換
PROJECT_ID和START_SCORE:https://cloud.google.com/identity-platform/docs/reference/rest/v2/projects/updateConfig?apix_params={"name":"projects/PROJECT_ID/config","updateMask":"recaptchaConfig.phoneEnforcementState,recaptchaConfig.useSmsTollFraudProtection,recaptchaConfig.tollFraudManagedRules","resource":{"recaptchaConfig":{"phoneEnforcementState":"ENFORCE","useSmsTollFraudProtection":true,"tollFraudManagedRules":[{"action":"BLOCK","startScore":START_SCORE}]}}}PROJECT_ID:已啟用 Identity Platform 的專案 ID。START_SCORE:可設定的門檻,決定簡訊要求在被標記並封鎖為話費詐欺前,可獲得的最高分數。最低門檻為
0.0。門檻上限為0.9。 任何分數高於門檻的要求都會視為詐欺。舉例來說,如果將門檻設為0.3,reCAPTCHA 就會封鎖詐欺分數為0.4以上的所有要求。如要提高詐騙防護等級,請將門檻設為較低的值。如要降低詐騙防護等級,請將門檻設為較高的值。這項設定會允許更多分數較高的要求通過。
在初始實作階段,建議先從較高的門檻開始 (例如
0.8),然後根據您的特定風險承受度逐步降低門檻。不建議將門檻設為
0.0或1.0。如果將門檻設為0.0,系統會封鎖所有簡訊;如果設為1.0,則會完全停用詐騙防護功能,這可能會導致簡訊無法傳送至高風險區域。
在已登入 Google Cloud 控制台的新瀏覽器視窗中輸入網址。
如果您在網頁或 Android 上使用 Identity Platform,請前往 Firebase 控制台註冊應用程式:
如果是 Android,請註冊使用 Identity Platform 的每個 Android 套件名稱。
如果是網頁,請為每個使用 reCAPTCHA 的網域新增授權網域:
前往 Google Cloud 控制台的「Identity Platform」頁面。
依序前往「設定」>「安全性」。
按一下「新增網域」。
輸入網域名稱,然後按一下「新增」儲存網域。
reCAPTCHA 金鑰佈建作業可能需要幾分鐘才能完成。
驗證設定:
擷取 reCAPTCHA 設定詳細資料:
{replace-your-project},搭配projectId或projectNumber。 在側邊面板中執行GetConfigAPI,擷取 reCAPTCHA 設定。確認 reCAPTCHA SMS Defense 設定正確:
如果 reCAPTCHA 設定正確,回應必須包含下列欄位和指定值:
recaptchaKeys:欄位不得留空,且至少須為下列其中一個平台設定:iOS、網頁或 Android。useSmsTollFraudProtection:這個欄位的值必須設為true。phoneEnforcementState:值必須設為ENFORCE。tollFraudManagedRules:在這個欄位中,startScore必須設為您選擇的門檻,且值必須介於0和0.9之間。
否則,請重新設定 reCAPTCHA SMS Defense。
回應範例
{ "recaptchaConfig": { "recaptchaKeys": [ { "key": "projects/{your-project}/keys/{recaptcha-key}", "type": "WEB" }, { "type": "IOS" }, { "type": "ANDROID" } ], "phoneEnforcementState": "ENFORCE", "tollFraudManagedRules": [ { "startScore": 0.8, "action": "BLOCK" } ], "useSmsTollFraudProtection": true } } ```
確認 SDK 版本正確無誤。
網頁
更新至最新版網頁 SDK。
- JavaScript SDK 9.20.0 以上版本支援 reCAPTCHA,可用於網頁應用程式的電子郵件和密碼驗證。
- JavaScript SDK 11 以上版本支援在網頁應用程式中使用 reCAPTCHA 進行電話驗證。
將網頁 SDK 整合至應用程式後,SDK 會自動擷取 reCAPTCHA 設定,並為您設定的供應商啟用保護功能。
Android
更新至最新版 Android SDK。Android SDK 23.1.0 以上版本支援 reCAPTCHA,可用於 Android 應用程式的電子郵件和密碼驗證,以及手機驗證。
此外,reCAPTCHA 支援需要 API 級別 23 (Marshmallow) 以上版本和 Android 6 以上版本。
將 Android SDK 整合至應用程式後,SDK 會自動擷取 reCAPTCHA 設定,並針對您設定的供應商強制執行門檻。
在應用程式層級
build.gradle檔案的依附元件部分,新增下列建構規則:implementation 'com.google.android.recaptcha:recaptcha:18.5.1'請務必使用 reCAPTCHA SDK 18.5.1 以上版本。
iOS
- 更新至 iOS SDK 11.6.0 以上版本。
將 iOS SDK 與應用程式整合後,SDK 會自動擷取 reCAPTCHA 設定,並針對已設定的供應商強制執行您設定的門檻。
如要將 reCAPTCHA iOS SDK 整合至應用程式,請參閱「準備 iOS 環境」。
如要確認連結器旗標中是否列出
-ObjC,請依序前往「Target」>「Build Settings」>「All」>「Linking」,然後確認Other Linker Flags顯示-ObjC。
監控 reCAPTCHA SMS defense 的 reCAPTCHA 指標
監控專案發出的 reCAPTCHA 指標,確認簡訊驗證流程受到保護。舉例來說,這些指標可協助您判斷是否已正確設定 Identity Platform 與 reCAPTCHA Enterprise API 的整合。並據此修正使用者流量的分數門檻。
請檢查專案傳送至 Cloud Monitoring 的下列指標,確認 reCAPTCHA SMS Defense 功能是否正常運作:
identitytoolkit.googleapis.com/recaptcha/verdict_countidentitytoolkit.googleapis.com/recaptcha/token_countidentitytoolkit.googleapis.com/recaptcha/sms_tf_risk_scores
詳情請參閱「監控 reCAPTCHA 指標」。
搭配使用 reCAPTCHA SMS Defense 和機器人防護功能
您可以同時使用 reCAPTCHA SMS Defense 和機器人防護功能。如果兩者皆啟用,且 phoneEnforcementState 設為 ENFORCE,則 Identity Platform 只會在要求通過兩項評估時才允許要求,且要求會失敗並關閉,不會改用其他驗證方法。
如要同時啟用這兩項功能,請使用 Google APIs Explorer 更新專案設定:
recaptchaConfig: {
phoneEnforcementState: 'ENFORCE',
useSmsTollFraudProtection: true,
useSmsBotScore: true
}
使用機器人防護功能時,停用 reCAPTCHA SMS Defense
如果您同時使用 reCAPTCHA SMS Defense 和機器人防護功能,且想停用 reCAPTCHA SMS Defense,但保留機器人防護功能,請使用 Google APIs Explorer 更新專案設定:
recaptchaConfig: {
phoneEnforcementState: 'ENFORCE',
useSmsTollFraudProtection: false,
useSmsBotScore: true
}
將 phoneEnforcementState 設為 ENFORCE,並將 useSmsBotScore 設為 true,讓電話驗證流程持續啟用機器人防護功能。
停用 reCAPTCHA SMS Defense
如要停用所有手機 reCAPTCHA 防護機制 (包括 reCAPTCHA SMS Defense),請使用 Google APIs Explorer 更新專案設定。請在新的瀏覽器視窗中輸入下列 HTTP 網址,並登入 Google Cloud 控制台:
https://cloud.google.com/identity-platform/docs/reference/rest/v2/projects/updateConfig?apix_params={"name":"projects/PROJECT_ID/config","updateMask":"recaptchaConfig.phoneEnforcementState,recaptchaConfig.useSmsTollFraudProtection,recaptchaConfig.useSmsBotScore","resource":{"recaptchaConfig":{"phoneEnforcementState":"OFF","useSmsTollFraudProtection":false,"useSmsBotScore":false}}}
將 PROJECT_ID 替換為專案 ID。
如要在使用機器人防護功能時停用 reCAPTCHA SMS Defense,請參閱「在使用機器人防護功能時停用 reCAPTCHA SMS Defense」。
後續步驟
- 進一步瞭解 reCAPTCHA SMS Defense 功能。