藉由 Play Integrity API,您可以檢查使用者動作和伺服器要求,確認來源是透過 Google Play 安裝的正版應用程式,並在正版 Android 裝置上執行。偵測到有風險的互動 (例如來自遭竄改的應用程式版本、不可靠的裝置或模擬環境) 時,後端伺服器可採取適當行動,防範濫用和未經授權的存取行為、打擊詐欺和作弊,並保護使用者免於遭受攻擊。
API 會傳回判定結果,協助您偵測潛在威脅,包括:
- 未經授權的存取行為:
accountDetails
判定結果可協助您判斷使用者是否透過 Google Play 安裝或購買應用程式/遊戲。 - 程式碼竄改:
appIntegrity
判定結果可協助您判斷是否與 Google Play 認定的未修改二進位檔互動。 - 有風險的裝置和模擬環境:
deviceIntegrity
判定結果可協助您判斷應用程式是否在通過 Play 安全防護認證的正版 Android 裝置上執行,或在正規的 Google Play 遊戲電腦版中執行。
Google Play 開發人員也可以選擇接收其他判定結果,偵測範圍更廣的潛在威脅,包括:
- 未修補的裝置:您可透過
MEETS_STRONG_INTEGRITY
回應中的deviceIntegrity
判定結果,判斷裝置是否已套用最新的安全性更新 (適用於搭載 Android 13 以上版本的裝置)。 - 其他應用程式的風險存取行為:
appAccessRiskVerdict
可協助您判斷是否有應用程式正在執行,這類應用程式可能擷取螢幕畫面、重疊顯示或控制裝置 (例如濫用無障礙服務權限)。 - 已知惡意軟體:
playProtectVerdict
可協助您判斷 Google Play 安全防護是否已啟用,以及裝置上是否安裝有風險或危險的應用程式。 - 過度活躍:
recentDeviceActivity
層級可協助您判斷裝置近期是否發出異常大量的要求,這可能表示有自動流量,也可能是遭受攻擊的跡象。 - 重複濫用行為和重複使用的裝置:
deviceRecall
(Beta 版) 可協助您判斷是否與先前標記的裝置互動,即使應用程式已重新安裝或裝置已重設也一樣。
這項 API 適用於各種 Android 板型規格,包括手機、平板電腦、摺疊式裝置、Android Auto、Android TV、Android XR、ChromeOS、Wear OS,以及 Google Play 遊戲電腦版。
安全性考量
為使應用程式充分發揮 Play Integrity API 的效用,請遵循下列建議做法:
制定反濫用策略
Play Integrity API 在與其他信號搭配使用,也就是做為整體反濫用策略的一部分,而非單一反濫用機制時效用最佳。在應用程式使用這個 API 的同時,也請搭配其他適當的安全性最佳做法。根據預設,應用程式每天在所有安裝檔中最多共可提出 10,000 次要求,但您可以要求提高每日上限。
收集遙測資訊及瞭解目標對象,再採取行動
在根據 Play Integrity API 判定結果變更應用程式行為之前,您可以透過不強制執行的方式實作 API,瞭解現有目標對象的目前情況。瞭解目前的安裝數會傳回什麼判定結果後,您就可以預估自己規劃的強制執行作業有何影響,再據此調整反濫用策略。
決定要求完整性判定結果的方式
Play Integrity API 提供兩種方式讓您要求及接收完整性判定結果。無論您是提出標準要求、傳統要求,還是兩者並用,完整性判定結果的回應都會以同一格式傳回。
標準 API 要求適用於任何應用程式或遊戲,隨選即用,可檢查任一使用者操作或伺服器要求是否正規。標準要求的延遲時間最短 (平均為數百毫秒),可相當程度地確保您取得實用的判定結果。這類要求會善用智慧型裝置端快取功能,同時將能抵禦幾類特定攻擊的防護功能委派給 Google Play。
傳統 API 要求是要求完整性判定結果的原始方式,系統目前仍支援提出這類要求。傳統要求的延遲時間較長 (平均為數秒),您必須自行負責降低特定類型攻擊的風險。由於傳統要求會啟動新的評估作業,所耗用的使用者資料量和電量會比標準要求還多,因此,建議把這類要求做為不常執行的一次性檢查,用於確認高度敏感/重要操作是否正規。如果正在考慮提出傳統要求,並快取這類要求留待日後使用,建議您改為提出可降低攻擊風險的標準要求。
下表重點列出兩種要求的主要差異:
標準 API 要求 | 傳統 API 要求 | |
---|---|---|
Android SDK 最低需求版本 | Android 5.0 (API 級別 21) 以上版本 | Android 4.4 (API 級別 19) 以上版本 |
API 需要暖機 | ✔️ (幾秒) | ❌ |
要求的一般延遲時間 | 幾百毫秒 | 幾秒 |
可能的要求頻率 | 頻繁 (隨選即可檢查任何操作或要求) | 不頻繁 (對最重要的操作或最機密的要求執行一次性檢查) |
如何因應重送和類似攻擊 | 由 Google Play 自動採取因應措施 | 使用 nonce 欄位和伺服器端邏輯 |
您可以查看傳統要求的注意事項表格,瞭解更多差異。
在適當時機要求系統提供完整性判定結果
如要防止詐騙者存取,建議您盡可能在執行動作或伺服器要求時,要求取得應用程式存取風險判定結果,以免詐騙者繞過由應用程式執行的完整性檢查。
避免他人輕易複製您的 API 要求
標準 API 要求中有一個名為 requestHash
的欄位,用於防範竄改和類似攻擊。在這個欄位中,您應加入應用程式要求內所有相關值的摘要。請按照如何使用內容繫結指南操作,為應用程式的標準要求提供防護。
傳統 API 要求中則有個名為 nonce
(number once 的簡寫,意為只能使用一次) 的欄位,用於防止重播和竄改等特定類型的攻擊。請按照如何產生 Nonce 指南操作,為應用程式的傳統要求提供防護。
避免快取完整性判定結果
快取完整性判定結果會增加處理 Proxy 的風險,在 Proxy 這類攻擊中,不肖人士會在另一個環境重複使用善意裝置的判定結果,為的就是要大肆濫用。與其對回應執行快取,不如提出標準 API 要求取得隨選判定結果。
制定分層強制執行策略
Play Integrity API 的完整性判定結果有多種可能的回應方式,可讓您建構具有多個強制執行層級的反濫用策略。如要這麼做,請設定應用程式的後端伺服器,根據各個可能回應或一組回應採取不同行為。
您也可以在 Play 管理中心的 API 回應中選擇接收額外裝置標籤,這樣就能依據裝置可信度制定分層的強制執行策略。只要裝置符合標籤條件,就會分別傳回所有標籤。舉例來說,在選擇接收所有裝置標籤後,會同時傳回 MEETS_STRONG_INTEGRITY
、MEETS_DEVICE_INTEGRITY
和 MEETS_BASIC_INTEGRITY
的裝置,和只傳回 MEETS_BASIC_INTEGRITY
的裝置相較,您可選擇更信任前者。無論何種情況,您都可透過伺服器做出不同回應。
從伺服器將一系列回應傳送至應用程式
與其每次都將相同的二進位檔成功/失敗回應從伺服器傳回應用程式,不妨提供一系列決策結果,因為這樣可增加複製難度。例如,您可以使用一系列相關的回應,像是「允許」、「允許限制」、「在人機驗證 (Captcha) 完成後允許限制」,以及「拒絕」。
使用裝置記憶功能偵測重複的濫用行為,同時保護使用者隱私
裝置記憶功能可保護使用者隱私,同時儲存及喚回與特定裝置相關的部分自訂資料。這類資料會儲存在 Google 伺服器,因此即使在應用程式重新安裝或裝置重設後,應用程式仍能穩定地喚回每部裝置的資料。這樣您就能可靠地重新識別過去曾出現濫用行為的裝置,採取行動並防止該裝置再次用於濫用行為。您可以自行定義裝置召回資料的三個值:
- 您最多可以將這些值當做三個獨立的旗標或布林值使用。舉例來說,值可能代表裝置是否已建立帳戶、是否已兌換免費試用方案,或是是否曾發生嚴重濫用行為。
- 或者,您也可以將所有值狀態合併為最多八個自訂標籤,例如一個標籤代表所有三個值都未修改時的預設狀態,另外七個標籤則代表自訂意義。您最多可根據定義的行為或動作,將所有裝置區隔為八個群組。在這種情況下,三個
writeDates
中最近更新的那個,表示你上次更新標籤的時間。
此外,使用裝置召回資料時,請一併留意先決條件和其他注意事項。
使用近期裝置活動偵測大規模濫用行為
使用 Play Integrity API 的近期裝置活動功能,找出要求大量完整性權杖的裝置。大量活動濫用者通常會從真實裝置產生有效的認證結果,並將這些結果提供給機器人,自動在已解鎖裝置和模擬器上發動攻擊。您可以根據近期裝置活動層級,查看應用程式在過去一小時內,於該裝置上產生的認證數量。
顯示可採取行動的錯誤訊息
請盡可能為使用者提供實用的錯誤訊息,並告知應採取哪些行動來修正問題,例如重試、啟用網路連線,或檢查 Play 商店應用程式是否為最新版本。
針對非預期問題或服務中斷情形制定因應計畫
Play 狀態資訊主頁會顯示 Play Integrity API 服務狀態的相關資訊,以及所有停止運作和服務中斷相關資訊。建議您預先規劃萬一發生大規模 Play Integrity API 服務中斷情形時,後端伺服器該如何運作。請注意,如果裝置專用的 Android 平台金鑰認證金鑰遭到撤銷,後端伺服器也應做好運作準備。
考慮採用端對端企業詐欺解決方案
需要完整的詐欺和機器人管理解決方案的企業客戶可以購買 reCAPTCHA Enterprise 行動版,其中的 Android 專用 SDK可提供開發人員詐欺風險分數參考。reCAPTCHA Enterprise 會自動納入 Play Integrity API 信號,並與客戶的 reCAPTCHA 網路和應用程式信號結合,提供立即可用、無縫接軌、且不易察覺的詐欺防範管理解決方案。此外,還可以針對無法使用 Play Integrity API 的 Android 應用程式提供安全防護。
存取高價值或敏感功能時,可能有風險的流量
找出應用程式或遊戲中的高價值或敏感操作,以便透過 Play Integrity API 提供安全防護,而不要直接拒絕使用者存取。如果情況允許,請先對有風險的流量進行驗證,再允許執行高價值操作。舉例來說,如果應用程式存取風險信號指出應用程式正在執行,可能會擷取螢幕畫面,那麼請先要求使用者停用或解除安裝可能擷取螢幕畫面的應用程式,再讓他們使用您想保護的功能。
服務條款與資料安全性
存取或使用 Play Integrity API 即表示您同意《Play Integrity API 服務條款》。存取 API 前,請先詳閱並瞭解所有適用的條款和政策。
Google Play 提供了「資料安全性」專區,可讓開發人員揭露應用程式的資料收集、分享和安全性做法,讓使用者掌握相關資訊。為了協助您填寫資料表單,請參閱這裡的資訊,瞭解 Play Integrity API 如何處理資料。