Google Play 遊戲正在進行 Beta 版公開測試。

完整性防護

受邀的開發人員可以存取提供完整防護的多項功能。Play Integrity API 和自動完整防護功能適用於 Google Play 遊戲和行動平台。

Play Integrity API

Play Integrity API 可協助防範您的遊戲發生潛在風險和詐欺活動,讓您能以適當的動作回應,減少攻擊與濫用的情形,像是詐欺、作弊和未經授權的存取。您的遊戲後端伺服器可能會接收與發布管道 (已經由 Play 商店授權/安裝)、應用程式套件 (未以任何方式竄改或修改) 和裝置本身 (例如並非已啟用 Root 權限或遭駭裝置) 有關的信號。這是唯一 Google 支援的解決方案,提供穩定信號給 Google Play 遊戲玩家,而非其他虛擬環境的使用者。這麼做有助於執行以下操作:

  • 透過確保您的 APK 由 Google Play 發行及安裝,防範未經授權的存取。
  • 透過驗證遊戲後端伺服器是否與未經修改的二進位檔互動,防範 APK 竄改行為。
  • 確認您新發布的 x86 二進位檔在 Google Play 遊戲虛擬環境中運作,而不會遭受未支援途徑利用的影響。

Play Integrity API 結合了多個已加密權杖的信號,針對原廠 Android 裝置和通過 Google Play 完整性檢查的虛擬環境,可提供正向的完整性判定結果。如果應用程式正在進行重要遊戲活動 (例如使用者進行應用程式內購,或是遊戲儲存了使用者的分數),建議您採用 Play Integrity API。我們不建議以預先定義的方式使用 API,例如在預先定義的時間呼叫 API。

雖然 API 可提供最大的彈性,但必須在信任的伺服器中執行額外的程式碼。裝置端驗證作業不安全,因此不建議使用。完整的解決方案必須包含伺服器端元件,此伺服器可提供完整性檢查與回應驗證的必要基礎。我們強烈建議避免向裝置傳回二元值 (是/否) 的決定,而是根據 Play Integrity API 提供的判斷結果調整應用程式行為。

Play Integrity API 是 SafetyNet Attestation API (SNAA) 和 Play App Licencing API 的後續版本。由於 SNAA 驗證 Google Play 遊戲完整性時只會傳回負信號,因此 SNAA 將不支援 Google Play 遊戲。

裝置完整性欄位

deviceIntegrity 欄位包含單一值 deviceRecognitionVerdict,代表裝置可強制執行應用程式完整性檢查的程度。根據預設,deviceRecognitionVerdict 可使用下列其中一個標籤:

  • MEETS_DEVICE_INTEGRITY:在搭載 Google Play 服務的 Android 裝置上執行應用程式。該裝置已通過系統完整性檢查,符合 Android 相容性條件。
  • MEETS_VIRTUAL_INTEGRITY:應用程式正在搭載 Google Play 服務的虛擬 Android 環境中運作,目前僅支援 Google Play 遊戲。該環境符合 Android 核心相容性需求,且已通過 Google Play 完整性檢查。
  • 沒有標籤 (例如空白值):應用程式正在可能遭受攻擊 (例如掛接 API) 或系統遭到入侵 (例如已啟用 Root 權限) 的裝置上執行;或者,應用程式不是在實體裝置上執行 (例如未通過 Google Play 完整性檢查的模擬器)。

Play Integrity API 使用 deviceRecognitionVerdict 標籤 MEETS_VIRTUAL_INTEGRITY 來表示遊戲是在 Google Play 遊戲中執行。以下是來自 Play Integrity API 傳遞的回應範例:

deviceIntegrity: {
    // "MEETS_VIRTUAL_INTEGRITY" indicates the game is running on Google Play Games
    deviceRecognitionVerdict: ["MEETS_VIRTUAL_INTEGRITY"]
}

確認驗證邏輯正在 Google Play 遊戲上檢查 MEETS_VIRTUAL_INTEGRITY 標籤。

如果您的行動裝置也支援跨平台遊戲,也請務必檢查驗證邏輯是否正在檢查 MEETS_DEVICE_INTEGRITY 標籤。

詳情請參閱 Play Integrity API 說明文件

自動完整防護

自動完整防護是 Google Play 在您每次開啟遊戲時新增的執行階段檢查。如果遊戲遭到竄改或未於 Google Play 上安裝,自動完整防護功能會禁止遊戲運作。這項功能不會檢查裝置;如要取得裝置完整性狀態,則必須使用 Play Integrity API。

自動完整防護支援下列功能以保護完整性:

  • 必須從 Google Play 安裝:加入檢查程序,偵測應用程式的安裝來源是否為 Google Play。如果檢查失敗,系統會提示使用者前往 Google Play 取得您的應用程式。這項建議功能預設為開啟,但您可以將其關閉。這項功能關閉後,系統會一併停用付費應用程式的盜版防護功能。
  • 限制修改:加入檢查程序,偵測應用程式是否未經修改。如果檢查失敗,應用程式將無法執行。系統一律會開啟這項功能,您無法自行關閉。
  • 限制反向工程:加入模糊處理和其他進階技術,讓不肖之徒難以移除執行階段檢查。系統一律會開啟這項功能,您無法自行關閉。

自動完整防護功能必須由開發人員選擇加入,且無需變更程式碼或開發人員作業。無論是否有數據連線或網際網路連線,防護功能都會執行,而且不需要使用伺服器端元件。請注意,如果裝置上的 Play 商店應用程式已處於離線狀態一段時間,「必須從 Google Play 安裝」檢查作業會定期要求進行數據連線。

其他 Google Play 遊戲注意事項

Google Play 提供各種完整性產品可協助保護遊戲。如要進一步瞭解可用的產品,請參閱 Play Integrity 說明文件。本節特別介紹在 Google Play 遊戲中使用這些產品時的特殊注意事項。

將不可信任的裝置從發行範圍中排除

您可以透過 Google Play 管理中心的設定,禁止未通過完整性檢查的裝置從 Google Play 安裝應用程式

這項功能目前與 Google Play 遊戲不相容,且禁止將遊戲發布至這個平台。請勿在裝置目錄中啟用這項排除規則。

Play Integrity API

Play Integrity API 使用 deviceRecognitionVerdict 標籤 MEETS_VIRTUAL_INTEGRITY 來表示遊戲是在 Google Play 遊戲中執行。以下是來自 Play Integrity API 傳遞的回應範例:

deviceIntegrity: {
    // "MEETS_DEVICE_INTEGRITY" is one of several possible values.
    deviceRecognitionVerdict: ["MEETS_VIRTUAL_INTEGRITY"]
}

確認驗證邏輯正在檢查 MEETS_VIRTUAL_INTEGRITY 標籤。

詳情請參閱 Play Integrity API 說明文件