直接從行動或網頁應用程式呼叫 API 時 (例如允許存取生成式 AI 模型的 API),API 容易遭到未經授權的用戶端濫用。為保護這些 API 免於遭到濫用,您可以透過 Firebase App Check 驗證所有傳入的 API 呼叫是否來自實際應用程式和未經竄改的裝置。
Firebase AI Logic 提供 Proxy 閘道,可讓您與 Firebase App Check 整合,並保護行動應用程式和網頁應用程式呼叫的生成式 AI 模型 API。搭配 App Check 使用 Firebase AI Logic SDK 時,支援所有設定:
保護「Gemini API」供應商:Gemini Developer API 和 Vertex AI Gemini API。
保護所有支援的模型,包括 Gemini 模型和 Imagen 模型。
App Check 也支援重送攻擊防護機制,也就是說,App Check 權杖只能使用一次。
App Check 運作方式的概要總覽
透過 App Check,執行您應用程式的裝置會使用應用程式或裝置認證供應商,驗證下列一或多項內容:
- 要求來自正版應用程式
- 要求來自未經竄改的正版裝置
這項認證會附加至應用程式使用 Firebase AI Logic SDK 發出的每項要求。啟用 App Check 強制執行後,系統會拒絕來自不具備有效認證的用戶端要求,以及來自您未授權應用程式或平台的所有要求。
設定 App Check 時,請考慮新增重放攻擊防護機制,讓 App Check 權杖只能使用一次。這個選項提供的防護功能比基本防護更強大,可讓您為應用程式和用途設定適當的防護等級。
如要瞭解 App Check 的詳細資訊,包括配額和限制,請參閱相關文件。
設定「App Check」
App Check 說明文件詳細說明瞭驗證供應商,以及詳細的實作說明。
選擇預設認證供應商,然後按照下列連結中的實作說明操作:
- Apple 平台: DeviceCheck 或 App Attest
- Android: Play Integrity
- 網站: reCAPTCHA Enterprise
- Flutter:支援上述所有預設供應商
如果您使用舊版外掛程式,請參閱下方的特殊例項化注意事項。 適用於 Flutter 和 App Check。 - Unity:支援上述所有預設供應商
請注意,如果預設認證供應商都無法滿足您的需求,您可以實作自訂供應商,使用第三方認證供應商或您自己的認證技術。
(必要) 啟用 App Check 強制執行 再將應用程式提交至公開可用的原始碼控管系統、分享應用程式,或公開發布應用程式。
(建議) 新增重送攻擊防護,進一步提升防護力,也就是 App Check 權杖只能使用一次。
新增重播防護功能,提升保護力
|
建議使用最新版 SDK,但請務必使用下列其中一個版本,才能啟用重播保護機制: Apple 平台 v12.2.0 以上版本 | Android BoM v34.14.0 以上版本 (App Check v19.1.0 以上版本) | 網頁 v12.14.0 以上版本 | Flutter v4.15.0 以上版本 (App Check v4.10.0 以上版本) | Unity v13.12.0 以上版本 |
根據預設,App Check 會使用工作階段權杖,這類權杖的存留時間 (TTL) 可設定為
不過,您可以強制執行重放攻擊防護機制,改用限次使用權杖,進一步提升保護力。強制執行重播保護措施時,會發生下列情況:
App Check 會封鎖對 Firebase AI Logic 的要求,這些要求使用工作階段權杖。而是App Check只會允許要求使用新核發的限用權杖,才能Firebase AI Logic。
驗證有限用途權杖後,系統會耗用該權杖,因此權杖只能使用一次,可防範重放攻擊。
App Check SDK 會為每個要求產生新的受限用途權杖。 請注意,這個程序可能會增加延遲時間,有時還會產生費用 (視認證服務供應商而定),進而影響要求。
設定及強制執行重放攻擊防護機制
|
按一下 Gemini API 供應商,即可在這個頁面查看供應商專屬內容和程式碼。 |
以下說明如何設定及強制執行重播保護措施:
如果尚未完成,請導入 App Check,並為應用程式啟用 App Check 強制執行。
啟用使用次數受限的權杖。
在應用程式的例項化期間,將
useLimitedUseAppCheckTokens參數設為true:Swift
// ... // During instantiation, enable usage of limited-use tokens let ai = FirebaseAI.firebaseAI( backend: .googleAI(), useLimitedUseAppCheckTokens: true ) // ...Kotlin
// ... // During instantiation, enable usage of limited-use tokens val ai = Firebase.ai( backend = GenerativeBackend.googleAI(), useLimitedUseAppCheckTokens = true ) // ...Java
// ... // During instantiation, enable usage of limited-use tokens FirebaseAI ai = FirebaseAI.getInstance( /* backend: */ GenerativeBackend.googleAI(), /* useLimitedUseAppCheckTokens: */ true ); // ...Web
// ... // During instantiation, enable usage of limited-use tokens const ai = getAI(firebaseApp, { backend: new GoogleAIBackend(), useLimitedUseAppCheckTokens: true }); // ...Dart
// ... // During instantiation, enable usage of limited-use tokens final ai = await FirebaseAI.googleAI( useLimitedUseAppCheckTokens: true, ); // ...Unity
// ... // During instantiation, enable usage of limited-use tokens var ai = FirebaseAI.GetInstance( useLimitedUseAppCheckTokens: true ); // ...強制執行重放攻擊防護機制。
在應用程式的程式碼集,請務必啟用使用次數受限的權杖 (請參閱上一個步驟)。
展開 Firebase AI Logic 的指標檢視畫面。
確認「基本保護」已強制執行,然後按一下「繼續」。
如要保護裝置免於重播攻擊,請選擇「Unenforced (monitoring only)」(未強制執行 (僅監控)) 或「Enforced」(強制執行)。
請考量下列事項,決定何時強制執行重播保護措施:
瞭解 Firebase AI Logic 如何與 App Check 整合
如要使用 Firebase AI Logic SDK,必須在 Firebase 專案中啟用 Firebase AI Logic API (firebasevertexai.googleapis.com)。這是因為 Firebase AI Logic SDK 發出的要求會先傳送至 Firebase AI Logic 伺服器,該伺服器會做為 Proxy 閘道,在要求獲准繼續前往所選「Gemini API」供應商的後端和 API,以存取 Gemini 和 Imagen 模型「之前」進行 Firebase App Check 驗證。