Google 提供一組 API 和服務,協助您偵測應用程式是否在安全可靠的環境中執行。核心是 Play Integrity API,可偵測潛在的危險和詐欺活動,協助檢查互動是否真實。除了應用程式和裝置完整性外,Play Integrity API 現在也針對存取權和無障礙功能風險、Google Play 安全防護,以及最近的裝置活動提供相關資訊。為了進一步強化反詐欺策略,Android 平台可針對可能與您應用程式相關的特定情境提供 API。
Play Integrity API
Play Integrity API 可讓您瞭解執行應用程式的裝置安全性狀態。這有助於確定正確的使用者正在存取機密資訊。
這有助於在可靠的環境中,檢查互動和伺服器要求是否來自正版應用程式二進位檔:
- 正版應用程式二進位檔:判斷您是否與 Google Play 認定的未修改二進位檔互動。
- 正版 Play 安裝:判斷目前的使用者帳戶是否已獲得授權,也就是使用者已從 Google Play 安裝或付費購買您的應用程式或遊戲。
- 正版 Android 裝置:判斷您的應用程式是否在 Google Play 服務支援的正版 Android 裝置上執行。
- 不含已知的惡意軟體:判斷 Google Play 安全防護是否已啟用,以及裝置上是否安裝有風險或危險的應用程式。
- 降低其他應用程式存取的風險:判斷其他應用程式是否正在執行,這類應用程式可以擷取螢幕畫面,或是控制裝置和應用程式輸入的內容。
這項機制如何協助防範詐欺行為
當使用者在應用程式中執行重要操作時,您可以呼叫 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 安全防護或移除有害應用程式,再繼續操作。
playProtectVerdict
可含有下列其中一個值:
判定結果 | 說明 | 建議做法 |
---|---|---|
|
已啟用 Play 安全防護,且未在裝置上發現任何應用程式問題。 |
Play 安全防護功能已啟用,且未發現任何問題,因此使用者無須採取任何動作。 |
|
已開啟 Play 安全防護,但未執行掃描作業。這可能是因為裝置或 Play 商店應用程式最近已重設。 |
Play 安全防護功能已啟用,且未發現任何問題,因此使用者無須採取任何動作。 |
|
已關閉 Play 安全防護。 |
Play 安全防護功能已啟用,且未發現任何問題,因此使用者無須採取任何動作。 |
|
已開啟 Play 安全防護,並發現裝置上安裝了可能有害的應用程式。 |
視風險容忍度而定,您可以要求使用者啟動 Play 安全防護,並對 Play 安全防護警示採取特定動作。如果使用者無法完成這些要求,您可以透過伺服器動作封鎖使用者。 |
|
已啟用 Play 安全防護,並發現裝置安裝了危險的應用程式。 |
視風險容忍度而定,您可以要求使用者啟動 Play 安全防護,並對 Play 安全防護警示採取特定動作。如果使用者無法完成這些要求,您可以透過伺服器動作封鎖使用者。 |
|
未評估 Play 安全防護判定結果。 這可能由許多因素造成,包括:
|
近期裝置活動
您也可以選擇接收最近的裝置活動,瞭解應用程式在過去一小時內針對特定裝置要求取得完整性權杖的次數。近期裝置活動資訊可幫助應用程式防範非預期的超活躍裝置。在該情況下,表示裝置可能正在遭受攻擊。您可以根據在一般裝置上安裝的應用程式每小時要求完整性權杖的預期次數,決定對每個近期裝置活動層級的信任程度。
如果選擇接收 recentDeviceActivity
,deviceIntegrity
欄位就會有兩個值:
deviceIntegrity: {
deviceRecognitionVerdict: ["MEETS_DEVICE_INTEGRITY"]
recentDeviceActivity: {
// "LEVEL_2" is one of several possible values.
deviceActivityLevel: "LEVEL_2"
}
}
建議您先查看相關資料,瞭解應用程式在所有裝置上的一般裝置活動水準。之後,當裝置發出過多要求時,您就可以決定應用程式應如何回應。如果活動很高,建議您要求使用者稍後再試一次。如果活動量非常高,建議您採取更嚴格的違規處置動作。
標準與傳統要求
實作 Play Integrity 時,請務必考量兩種要求。在大部分的情況下,您應使用標準要求以提供最快速的回應,而在需要對裝置認證記錄的情況下,應使用傳統要求。
傳統要求 |
標準要求 |
---|---|
要求可能需要較長的處理時間,應降低使用頻率。 舉例來說,我們會做為不定期的一次性檢查作業,用於確認高價值或敏感動作是否正規。 不常使用。 |
要求延遲時間短,可以隨選使用。 提出標準要求的程序包含兩個部分:
隨選使用。 |
如要進一步瞭解標準和傳統要求,請參閱 Play Integrity 說明文件。
導入作業
如要開始使用 Play Integrity API,請按照下列步驟操作:
- 在 Google Play 管理中心啟用 Play Integrity API 回應並連結至 Google Cloud 專案。
- 在應用程式中整合 Play Integrity API。
- 決定您要處理判定結果的方式。
根據預設,Play Integrity API 每天允許每個應用程式最多 1 萬個要求。如要有意提高每日要求數量上限,請按照這些指示操作。如要符合提高每日要求數量上限的資格,應用程式必須正確導入 Play Integrity API,並在 Google Play 除了任何其他發行管道外提供此 API。
Play Integrity API 注意事項
- 請務必妥善處理 Play Integrity API 回應中的錯誤。請按照錯誤代碼的重試和強制執行策略指南操作。
- Play Integrity API 提供回應測試工具。
- 如要在裝置上查看完整性結果,請按照這些步驟操作。
- 如要瞭解使用 Play Integrity API 的建議做法,請參閱這些「安全性考量」。
自動完整防護 (API >= 23)
自動完整防護功能是一種防竄改程式碼保護服務,可以保護應用程式免受未經授權的修改與轉散佈行為的完整性。這項服務不需要數據連線即可運作,也不需要開發人員在測試前完成工作,也不需要整合後端伺服器。
這項機制如何協助防範詐欺行為
啟用自動完整防護功能後,Google Play 就會為應用程式的程式碼加入檢查,利用進階模糊處理和防反向工程技術,讓使用者難以移除這些檢查。在執行階段,防護功能會檢查應用程式是否遭到竄改或重新發行:
- 如果安裝程式檢查失敗,系統會提示使用者透過 Google Play 使用應用程式
- 如果修改檢查失敗,應用程式將無法執行
這有助於確保使用者防範經過修改的應用程式版本。
導入作業
自動完整防護功能目前僅適用於特定 Play 合作夥伴。如果 Google Play 管理中心並未提供該功能,請與 Google Play 開發人員支援團隊聯絡,但如果您有興趣取得存取權,請與 Google Play 開發人員支援團隊聯絡。
您可以在建立版本時開啟防護功能,也可以前往「應用程式完整性」頁面 (依序點選「發布」>「應用程式完整性」) 開啟防護功能。您的應用程式必須使用 Play 應用程式簽署功能,才能使用自動完整防護功能。
請務必先測試受保護的應用程式,再將版本升級為正式版。
考量要點
- 不發布未受保護的應用程式版本
- 混用防竄改功能解決方案的注意事項
- 測試受保護的應用程式後再發布正式版
- 照常監控統計資料,掌握當機情形增加的情況
- 您可以向 Google Play 回報應用程式的破解版本