保護環境

Google 提供一組 API 和服務,協助您偵測應用程式是否在安全可信的環境中執行。其中的核心是 Play Integrity API,可偵測可能有風險的詐欺活動,協助檢查互動是否屬實。除了應用程式和裝置完整性之外,Play Integrity API 現在也提供存取和無障礙風險Google Play 安全防護近期裝置活動的相關資訊。為進一步強化反詐欺策略,Android 平台針對可能與應用程式相關的特定情境提供 API。

Play Integrity API

Play Integrity API 功能

Play Integrity API 可讓您瞭解應用程式執行裝置的安全性狀態。這有助於確保正確的使用者能存取私密資訊。

可協助您檢查互動情形和伺服器要求,確認來源是可信賴環境中的正版應用程式二進位檔:

  • 正版應用程式二進位檔:判斷您是否與 Google Play 認定的未修改二進位檔互動。
  • 正版 Play 安裝:判斷目前的使用者帳戶是否已獲得授權,也就是使用者已從 Google Play 安裝或付費購買您的應用程式或遊戲。
  • 正版 Android 裝置:判斷應用程式是否在搭載 Google Play 服務的正版 Android 裝置上執行。
  • 不含已知的惡意軟體:判斷 Google Play 安全防護是否已啟用,以及裝置上是否安裝有風險或危險的應用程式。
  • 其他應用程式存取風險低:判斷是否有其他可以擷取螢幕畫面或控制裝置的應用程式正在執行,並輸入到您的應用程式。

這有助於減少詐欺

當使用者在應用程式中執行重要動作時,您可以呼叫 Play Integrity API。如果不是的話,應用程式的後端伺服器即可判斷要採取哪些行動,防範攻擊和詐欺行為。舉例來說,您可以要求使用者進行額外驗證,或拒絕存取敏感功能。

Play Integrity API 決策流程

應用程式存取風險

我們推出「應用程式存取風險」信號,協助您評估應用程式執行期間,或使用無障礙權限存取應用程式時,裝置上的其他應用程式可否查看及擷取螢幕畫面。已驗證的無障礙應用程式會自動從這些判定結果中排除。應用程式存取風險信號可協助開發人員保護應用程式,同時維護使用者隱私,因為要求的應用程式不會取得已安裝應用程式的身分資訊,且判定結果不會與使用者或裝置 ID 建立關聯。

手機螢幕截圖,顯示系統要求使用者關閉特定應用程式。

這項合作讓我們取得所需信號,進而提供更深入的洞察資訊,更有效地保護客戶。
—Nubank,搶先體驗合作夥伴

應用程式存取風險信號有不同的風險等級:

  • 擷取回應表示有其他應用程式正在執行,可擷取螢幕畫面。
  • 控制回應表示有其他應用程式正在執行,可控制裝置,因此可以擷取螢幕畫面,並控制應用程式中的輸入內容。

應用程式存取風險違規處置

找出應用程式或遊戲中的高價值或敏感操作,以便透過 Play Integrity API 提供安全防護,而不要直接拒絕使用者存取。如果情況允許,請先對有風險的流量進行驗證,再允許執行高價值操作。舉例來說,如果應用程式存取風險信號指出應用程式正在執行,可能會擷取螢幕畫面,那麼請先要求使用者停用或解除安裝可能擷取螢幕畫面的應用程式,再讓他們使用您想保護的功能。

下表列出一些判定結果範例:

應用程式存取風險判定結果的回應示例 解釋
appsDetected:
["KNOWN_INSTALLED"]
只有 Google Play 可辨識的已安裝應用程式,或裝置製造商在系統分區預先載入的應用程式。目前沒有任何執行中的應用程式會導致擷取、控制或重疊判定結果。
appsDetected:
["KNOWN_INSTALLED",
"UNKNOWN_INSTALLED",
"UNKNOWN_CAPTURING"]
有 Google Play 安裝的應用程式,或裝置製造商在系統分區預先載入的應用程式。目前有其他執行中的應用程式已啟用權限,可用來查看螢幕畫面或擷取其他輸入和輸出內容。
appsDetected:
["KNOWN_INSTALLED",
"KNOWN_CAPTURING",
"UNKNOWN_INSTALLED",
"UNKNOWN_CONTROLLING"]
有 Play 或系統應用程式正在執行,已啟用權限,可用於查看螢幕畫面或擷取其他輸入和輸出內容。此外,也有其他已啟用權限的應用程式正在執行,可用於控制裝置並直接控管輸入到應用程式中的內容。
appAccessRiskVerdict: {} 表示由於未符合必要條件,系統不會評估應用程式存取風險。舉例來說,如果裝置可信度不足,就屬這種情況。

Play 安全防護信號

Play 安全防護信號會告知應用程式 Play 安全防護是否已啟用,以及是否在裝置上發現已知有害的應用程式。

environmentDetails:{
  playProtectVerdict: "NO_ISSUES"
}

如果惡意軟體是您應用程式或使用者資料的特別疑慮,您可以查看這項判定結果,並要求使用者在繼續操作前啟用 Play 安全防護或移除有害的應用程式。

開啟 Play 安全防護對話方塊

playProtectVerdict 可含有下列其中一個值:

判定結果 說明 建議做法

NO_ISSUES

已開啟 Play 安全防護,且未在裝置上發現任何應用程式問題。

Play 安全防護功能已啟用,且未發現任何問題,因此使用者無須採取任何動作。

NO_DATA

已開啟 Play 安全防護,但未執行掃描作業。裝置或 Play 商店應用程式最近可能已重設。

Play 安全防護功能已啟用,且未發現任何問題,因此使用者無須採取任何動作。

POSSIBLE_RISK

已關閉 Play 安全防護。

Play 安全防護功能已啟用,且未發現任何問題,因此使用者無須採取任何動作。

MEDIUM_RISK

已開啟 Play 安全防護,並發現裝置上安裝了可能有害的應用程式。

視風險容忍度而定,您可以要求使用者啟動 Play 安全防護功能,並對 Play 安全防護警示採取特定動作。如果使用者無法滿足這些要求,您可以透過伺服器動作封鎖危險的應用程式。

HIGH_RISK

已開啟 Play 安全防護,並發現裝置安裝了危險的應用程式。

視風險容忍度而定,您可以要求使用者啟動 Play 安全防護功能,並對 Play 安全防護警示採取特定動作。如果使用者無法滿足這些要求,您可以透過伺服器動作封鎖危險的應用程式。

UNEVALUATED

未評估 Play 安全防護判定結果。

這可能由許多因素造成,包括:

  • 裝置可信度不足。
  • 僅限遊戲:使用者帳戶並非處於 LICENSED 狀態。

近期裝置活動

您也可以選擇接收最近的裝置活動,瞭解應用程式在過去一小時內針對特定裝置要求取得完整性權杖的次數。近期裝置活動資訊可幫助應用程式防範非預期的超活躍裝置。在該情況下,表示裝置可能正在遭受攻擊。您可以根據在一般裝置上安裝的應用程式每小時要求完整性權杖的預期次數,決定對每個近期裝置活動層級的信任程度。

如果選擇接收 recentDeviceActivitydeviceIntegrity 欄位就會有兩個值:

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

首先,請查看資料,瞭解應用程式在所有裝置上的典型裝置活動層級。接著,您可以決定應用程式在裝置提出過多要求時應如何回應。如果活動量稍高,您可能要請使用者稍後再試。如果活動量非常高,您可能需要採取更嚴格的強制措施。

標準要求與傳統要求

在實作 Play Integrity 時,請務必考量這兩種要求。在大多數情況下,您應使用標準要求,以便提供最快速的回應。如果需要針對裝置認證記錄產生新要求,則應使用傳統要求

傳統要求

標準要求

這類要求的處理時間較長,應減少使用頻率。

比如可以將前者做為不定期的一次性檢查,用於確認高度敏感/重要操作是否正規。

不常使用

要求的延遲時間短,可隨選即用。

提出標準要求的程序包含兩個部分:

  • 備妥完整性權杖供應工具 (一次性)
  • 索取完整性權杖 (隨選)

隨選使用

如要進一步瞭解「標準」和「傳統」要求,請參閱 Play Integrity 說明文件。

實作

如要開始使用 Play Integrity API,請按照下列步驟操作:

根據預設,Play Integrity API 允許每個應用程式每天提出最多 1 萬次要求。如要申請調高每日要求次數上限,請按照這些操作說明。除了在任何其他發行管道外,您的應用程式也必須在 Google Play 上架,這樣您才有資格申請調高每日的要求數量上限。

Play Integrity API 的注意事項

  • 您必須妥善處理 Play Integrity API 回應中的錯誤。請按照這篇文章中的指南,根據錯誤代碼實施重試和執行策略。
  • Play Integrity API 提供回應測試工具
  • 如要查看裝置的完整性結果,請按照下列步驟操作
  • 請參閱這些安全性考量,瞭解使用 Play Integrity API 的建議做法。

自動完整防護 (API 23 以上)

自動完整防護功能是一種防竄改程式碼保護服務,可防範未經授權的修改與轉散布行為,有助保障應用程式的完整性。即使沒有數據連線,保護功能也可以正常運作,不必在測試前執行動作,也不需要整合後端伺服器。

這有助於減少詐欺

開啟自動完整防護功能後,Google Play 就會在應用程式的程式碼中加入檢查,並利用進階模糊處理和防止反向工程的技術,讓不肖之徒難以移除這些檢查。在執行階段,防護功能會檢查應用程式是否遭到竄改或重新發布:

  • 如果安裝程式檢查失敗,系統會提示使用者透過 Google Play 取得應用程式。
  • 如果修改檢查失敗,應用程式將無法執行

這有助於確保使用者的安全,避免受到遭修改應用程式版本的侵擾。

實作

自動完整防護功能目前僅開放給特定 Play 合作夥伴使用。如果您想取得這項功能,但 Google Play 管理中心尚未提供,請與 Google Play 開發人員支援團隊聯絡。

您可以在建立版本時啟用防護功能,也可以在「應用程式完整性」頁面 (依序點選「發布」>「應用程式完整性」) 啟用防護功能。如要使用自動完整防護功能,應用程式必須使用 Play 應用程式簽署

將受保護的應用程式發布至正式環境前,請務必先測試

注意事項

  • 不發布未受保護的應用程式版本
  • 混用防竄改功能解決方案的注意事項
  • 在發布正式版前測試受保護的應用程式
  • 照常監控當機次數是否增加
  • 您可以向 Google Play 回報應用程式的破解版本