| 選取平台: | iOS+ Android 網頁 Flutter |
本頁面說明如何在 Flutter 應用程式中,使用 reCAPTCHA Enterprise 提供者設定 App Check。App Check 可確保只有您的應用程式能存取專案的後端資源。如要瞭解詳情,請參閱 App Check 總覽。
App Check 需要使用評分依據 reCAPTCHA鍵,因此使用者看不到。也就是說,reCAPTCHA Enterprise 供應商不會要求使用者隨時完成驗證問題。
如果您的用途需要 reCAPTCHA Enterprise 功能,但 App Check 未實作,或是想搭配自訂供應商使用 App Check,請參閱「實作自訂 App Check 供應商」。
1. 設定 Firebase 專案
如果您尚未在 Flutter 專案中安裝及初始化 Firebase,請先完成這項操作。
前往 Google Cloud 控制台的「Fraud Defense」(詐欺防禦) 頁面,然後針對 reCAPTCHA Enterprise 供應商執行下列操作:
確認您位在正確的專案 (請參閱畫面頂端的專案挑選器)。
如果出現提示,請啟用 reCAPTCHA Enterprise API。
根據目標廣告平台建立金鑰:
iOS+
建立 iOS 類型的金鑰,並指定應用程式的軟體包 ID (例如
com.example.my_app)。請務必輸入您在 Firebase 專案中建立 Firebase Apple 應用程式時提供的軟體包 ID。軟體包 ID 值會區分大小寫。
對於 App Check,每個軟體包 ID 只能對應單一 reCAPTCHA 鍵。
Android
建立 Android 類型的金鑰,並指定應用程式的套件名稱 (例如
com.example.my_app)。請務必輸入您在 Firebase 專案中建立 Firebase Android 應用程式時提供的套件名稱。套件名稱值會區分大小寫。
對於 App Check,每個套件名稱只能對應單一 reCAPTCHA 金鑰。
網頁版
建立「網站」類型的金鑰,並為網頁應用程式指定每個網域。
App Check不支援在超過 250 個網域放送的網頁應用程式。
請勿將
localhost新增為部署至 (或即將部署至) 正式環境的 reCAPTCHA 金鑰網域。將「使用核取方塊挑戰」選項取消選取。
如需詳細操作說明,請參閱「建立以分數為依據的 reCAPTCHA 金鑰」一文。
請記下每個金鑰。您必須在 Firebase 控制台的註冊流程中新增這些項目。
在「應用程式」分頁中,向 reCAPTCHA Enterprise 供應商註冊每個目標廣告平台應用程式,以使用 App Check。您需要提供在 Google Cloud 控制台中取得的金鑰。
選用:設定權杖存留時間 (TTL)。
在應用程式註冊設定中,為供應商核發的 App Check 權杖設定自訂存留時間 (TTL)。您可以將存留時間設為介於 30 分鐘至 7 天之間的任何值。變更這個值時,請注意下列取捨:
- 安全性:存留時間越短,安全性就越高,因為這樣可縮短遭攔截或外洩的權杖遭到濫用的時間。
- 效能:TTL 較短表示應用程式會更頻繁地執行認證。由於應用程式驗證程序每次執行都會增加網路要求延遲,因此存留時間較短可能會影響應用程式效能。
- 配額和費用:TTL 較短且經常重新認證會更快耗盡配額,而且對於付費服務,可能需要支付更多費用。請參閱「配額與限制」。
預設 TTL 為 1 小時,適用於大多數應用程式。請注意,App Check 程式庫會在存留時間 (TTL) 約一半的時間點重新整理權杖。
選用:設定進階設定。
按一下 [儲存]。
(選用) 調整進階設定
使用者開啟應用程式時,reCAPTCHA Enterprise 會評估主要姿勢下使用者互動的風險程度,並傳回介於 0.0 和 1.0 之間的分數,以 0.1 為單位遞增。
- 0.0 分代表互動的風險高,可能是詐欺行為。
- 1.0 分代表互動的風險低,很可能是正當活動。
App Check 可讓您設定應用程式風險門檻,以便調整對這類風險的容忍度。
在多數用途中,建議使用預設門檻值 0.5。如果您的用途需要調整,可以在 Firebase 控制台中為每個應用程式設定這個值 (依序前往「安全性」 >「App Check」)。請務必展開並查看下方設定應用程式風險門檻的重要考量。
2. 在應用程式中新增 App Check 外掛程式
如要使用 reCAPTCHA Enterprise 供應商,請新增對應的 App Check 外掛程式。
在 Flutter 專案的根目錄中執行下列指令,安裝外掛程式:
flutter pub add firebase_app_check完成後,請重新建構 Flutter 專案:
flutter run
3. 初始化 App Check
在應用程式中,您必須先初始化 App Check,才能使用任何其他 Firebase 服務。
import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_app_check/firebase_app_check.dart';
import 'firebase_options.dart';
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform);
await FirebaseAppCheck.instance.activate(
providerWeb: ReCaptchaEnterpriseProvider(WEB_SITE_KEY),
providerAndroid: const AndroidReCaptchaProvider(ANDROID_SITE_KEY),
providerApple: const AppleReCaptchaProvider(IOS_SITE_KEY),
);
runApp(App());
}
4. 監控指標並啟用強制執行功能
在應用程式中設定 App Check 後,即可開始向使用者發布更新版應用程式。
更新後的用戶端應用程式會開始傳送 App Check 權杖,並向 Firebase 發出每項要求。不過,在App Check強制執行前,App Check不會封鎖含有無效權杖的要求。
監控指標
啟用強制執行設定前,請確認這麼做不會影響現有的合法使用者。不過,如果發現有人可疑地使用應用程式資源,建議您提早啟用強制執行功能。
如要協助做出這項決定,請查看所用服務的 App Check 指標:
- 監控 App Check 要求的指標,適用於 Firebase AI Logic、SQL Connect、Realtime Database、Cloud Firestore、Cloud Storage、Authentication、適用於 iOS 的 Google Identity、Maps JavaScript API 和 Places API (新版)。
- 監控 Cloud Functions 的 App Check 要求指標。
啟用App Check違規處置功能
瞭解 App Check 對使用者的影響後,即可啟用 App Check 強制執行:
- 針對 Firebase AI Logic、SQL Connect、Realtime Database、Cloud Firestore、Cloud Storage、Authentication、Google Identity for iOS、Maps JavaScript API 和 Places API (新版),啟用 App Check 強制執行。
- 為 Cloud Functions 啟用 App Check 強制執行功能。
在偵錯環境中使用 App Check
App Check 會將部分環境歸類為無效,例如開發期間來自模擬器 / 模擬裝置或本機主機的要求,或是來自持續整合 (CI) 環境的要求。
在 App Check 強制執行後,如要在這類環境中執行應用程式,您必須建立應用程式的偵錯版本,並使用 App Check debug provider,而非實際工作環境的認證提供者。
詳情請參閱「在 Flutter 應用程式中,透過偵錯供應器使用 App Check」。
定價
App Check 會代表您建立評估作業,在應用程式每次重新整理 App Check 權杖時,驗證使用者的回應權杖。如果建立的評估超過免費配額,系統會向 Firebase 專案收取費用。詳情請參閱reCAPTCHA定價。
根據預設,應用程式每 1 小時會重新整理這個權杖兩次。如要控管應用程式重新整理 App Check 權杖的頻率 (也就是建立新評估的頻率),可以設定權杖存留時間。