開始在 Flutter 應用程式中使用 App Check 和 reCAPTCHA Enterprise

選取平台: iOS+ Android 網頁 Flutter


本頁說明如何使用 reCAPTCHA Enterprise 供應器,在 Flutter 應用程式中設定 App Check。App Check 有助於確保只有您的應用程式可以存取專案的後端資源。如要瞭解詳情,請參閱App Check總覽。

App Check 需要使用分數 reCAPTCHA鍵,因此使用者無法看到。這表示 reCAPTCHA Enterprise 提供者不會要求使用者解決驗證問題。

如果您的用途需要 App Check 未實作的 reCAPTCHA Enterprise 功能,或者您想搭配自訂供應器使用 App Check,請參閱「實作自訂 App Check 供應器」。

1. 設定 Firebase 專案

  1. 如果您尚未在 Flutter 專案中安裝及初始化 Firebase,請先完成這些步驟。

  2. 前往 Google Cloud 控制台的「Fraud Defense」(詐欺防禦) 頁面,然後針對 reCAPTCHA Enterprise 供應商執行下列操作:

    1. 請確認您位於正確的專案中 (請參閱畫面頂端的專案挑選器)。

    2. 如果出現提示訊息,請啟用 reCAPTCHA Enterprise API。

    3. 根據目標廣告平台建立金鑰:

      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 金鑰」。

    4. 請記下每個金鑰。您必須將這些資訊新增至 Firebase 控制台的註冊流程。

  3. 在 Firebase 控制台中,依序前往「Security」(安全性) >「App Check」。

  4. 在「應用程式」分頁中,註冊每個目標平台應用程式,以便透過 reCAPTCHA Enterprise 供應商使用 App Check。您必須提供在 Google Cloud 控制台取得的金鑰。

  5. 選用:設定權杖存留時間 (TTL)。

    在應用程式註冊設定中,為供應商核發的 App Check 權杖設定自訂存留時間 (TTL)。您可以將存留時間設為 30 分鐘到 7 天之間的任何值。變更這個值時,請注意下列取捨:

    • 安全性:存留時間越短,安全性越高,因為這會縮短外洩或遭攔截的權杖可能遭攻擊者濫用的時間。
    • 效能:存留時間越短,應用程式執行認證的頻率就越高。由於每次執行應用程式認證程序時,都會增加網路要求的延遲時間,因此 TTL 較短可能會影響應用程式的效能。
    • 配額和費用:存留時間較短和頻繁重新認證會更快耗盡配額,如果是付費服務,費用可能會更高。請參閱「配額與限制」。

    預設存留時間為 1 小時,適用於大多數應用程式。請注意,App Check 程式庫會在存留時間 (TTL) 期間的一半時間左右重新整理權杖。

  6. 選用:調整進階設定。

  7. 按一下 [儲存]。

(選用) 調整進階設定

使用者開啟應用程式時,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 外掛程式。

  1. 在 Flutter 專案的根目錄中,執行下列指令來安裝外掛程式:

    flutter pub add firebase_app_check
    
  2. 完成後,請重新建構 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 後,即可開始向使用者發布更新版應用程式。

更新後的用戶端應用程式會開始在每次向 Firebase 發出要求時,一併傳送 App Check 權杖。不過,App Check App Check強制執行前,不會封鎖含有無效權杖的要求。

監控指標

啟用強制執行功能前,請確認這麼做不會干擾現有的合法使用者。不過,如果發現應用程式資源有可疑的使用情形,建議您盡早啟用強制執行功能。

為協助您做出決定,您可以查看所用服務的 App Check 指標:

啟用 App Check 違規處置

瞭解 App Check 對使用者的影響後,即可啟用 App Check 強制執行:

在偵錯環境中使用 App Check

App Check 會將某些環境歸類為無效,例如開發期間來自模擬器或 localhost 的要求,或來自持續整合 (CI) 環境的要求。

如要在強制執行 App Check 後,於這類環境中執行應用程式,您必須建立應用程式的偵錯版本,並使用 App Check 偵錯服務,而非正式版認證服務。

詳情請參閱「在 Flutter 應用程式中搭配使用 App Check 與偵錯供應器」。

定價

每當應用程式重新整理 App Check 權杖時,App Check 會代您建立評估作業,驗證使用者的回應權杖。如果建立的評估數量超過免付費配額,Firebase 專案會產生費用。詳情請參閱reCAPTCHA定價。

根據預設,應用程式每 1 小時會重新整理這個權杖兩次。如要控管應用程式重新整理 App Check 權杖的頻率 (進而控管建立新評估作業的頻率),您可以設定權杖存留時間。