在 Google Play 上保护您的游戏与用户
作者 / Dom Elliott, Google Play 產品經理
在打造出一款優秀的游戲后,開發者們都希望能夠網羅四海玩家,并為他們帶去流暢安心的預期體驗。不過,開發者們也同時面臨著喜憂參半的困境: 游戲越受歡迎,就越容易引起攻擊者和濫用者的注意。人們會出于各種目的嘗試篡改您的游戲或者濫用您的分發及獲利渠道: 其中一些可能相對無害,而另一些則可能會對您的玩家和業務產生負面影響。
因此,制定正確的反濫用策略并根據目標迅速采取行動非常重要。雖然目前還沒有方案能夠完美解決游戲的安全問題,不過我們建議大家在規劃整體戰略時,不妨參考以下推薦的 Google Play 工具和服務,為您的游戲和玩家帶去更強大的安全防護。
完整性
對游戲和玩家的攻擊通常來自不受信任的環境,例如修改后的 APK、模擬器、遭到入侵或者獲得 root 權限的設備。盡管這些環境本身可能并無害,但是通過檢測它們,您便可以依據自身的目標為游戲選擇最佳的應對方案。例如,阻止盜版者體驗付費游戲;或者,如果是免費網絡游戲,您可能會想把所有疑似使用模擬器的玩家全部轉移到同一個服務器上。
△ 該視頻所推薦的 Google Play 工具可幫助您有效保護游戲的完整性
騰訊視頻鏈接
https://v.qq.com/x/page/n0947ubr1rs.html
Bilibili 視頻鏈接
https://www.bilibili.com/video/BV1q5411t78h/
Google Play 提供了許多適用于網絡游戲的 API,讓您能夠更加輕松地發現濫用問題并采取正確的應對措施。此外,Google Play 還新推出了一款自動完整性保護的開發者預覽版工具,以減少單機/網絡游戲的二次打包問題。
在服務器端手動檢查完整性
Google Play 應用許可服務能夠確保玩家使用從 Google Play 安裝的未經修改的二進制文件。SafetyNet attestation 則可用于評估運行設備的狀態。
Google Play 應用許可服務
https://developer.android.google.cn/google/play/licensing
SafetyNet attestation?
https://developer.android.google.cn/training/safetynet/attestation.html?
開發者可將這些檢查集成到一項或多項關鍵操作 (如啟動、登錄、匹配、購買等) 上,以便能夠在由服務器驅動的網絡游戲內順利運行這些檢查。如果在客戶端執行檢查卻不與關鍵操作進行綁定,將很容易被攻擊者移除。建議各位開發者按照下列步驟,將檢查逐步集成到游戲中:
生成 Nonce: 在您的服務器上生成一個 Nonce 以啟動檢查。Nonce 是您為各項檢查附加的唯一隨機字符串,它可確保攻擊者難以在重放攻擊中復制一個正響應。請盡量使用特定于請求的信息 (如用戶 ID 的哈希值),以確保不會重復使用同一個 Nonce;
請求響應: 請將生成的 Nonce 附加到游戲檢查中,并調用應用許可和 SafetyNet API。您必須使用 API 密鑰才能集成 SafetyNet,且每天的默認請求配額為 10,000 次。如果您的應用需要增加配額,請提出請求;
接收響應: API 與 Google 服務器進行通信時,Google 服務器通過返回一個響應,告知您當前用戶是否從 Google Play 獲得應用許可,以及設備是否為通過兼容性測試的 Android 實體設備。為避免過度調用,SafetyNet 有時會出現響應超時的情況,因此,還請您針對該意外情況進行規劃并做好相應的準備;
傳輸響應: 您的游戲會將 Google 響應和 Nonce 一同發送回您的服務器上。請務必在服務器端執行驗證流程,使攻擊者更難從游戲中移除檢查;
評估響應: 您的服務器應確保所有內容有效,包括 Nonce、應用包名稱及哈希值、時間戳,然后再根據 Google 的響應對許可與設備進行評估。例如,若用戶擁有有效許可且設備可信,則允許用戶繼續游戲。
想知道這些 API 在游戲中的實戰表現嗎?請收看上方視頻,聆聽來自 Ravio 和 Supercell 的精彩案例分享。Ravio 利用上述 API 優化了《憤怒的小鳥 2》玩家排行榜;Supercell 則在《荒野亂斗》beta 版發布前大幅削減了非授權玩家的數量。
Ravio
https://play.google.com/store/apps/dev?id=9133452689932095671&hl=en_GB
Supercell?
https://play.google.com/store/apps/dev?id=6715068722362591614&hl=en_GB
《憤怒的小鳥 2》
https://play.google.com/store/apps/details?id=com.rovio.baba&hl=en_GB?
《荒野亂斗》
https://play.google.com/store/apps/details?id=com.supercell.brawlstars&hl=en_GB?
在客戶端自動檢查完整性
這些 API 并不適用于所有類型的游戲和用例。您的游戲可能主要在離線環境下運行,就像許多付費游戲和單人游戲一樣。為此,我們正在積極尋找資深合作伙伴,邀請他們加入 Google Play 自動完整性保護開發者預覽計劃,攜手為僅具備輕量服務器集成或者完全無服務器的游戲提供更好的支持。
Google Play 自動完整性保護
http://g.co/play/integrityprotection?
對于加入該開發者預覽計劃的游戲,當您將游戲上傳至 Google Play Console 管理中心后,Google Play 將以您的身份為代碼添加一項證書檢查以及反篡改保護。直至測試之前,您不必進行任何額外的開發工作,只需通過 Android App Bundle 發布游戲即可。這些保護措施的優勢在于,它們會隨著時間的推移自行優化與改進,并不需要開發者進行任何操作。此外,反篡改保護也可幫助網絡游戲減少二次打包的問題。如果您希望為自己的游戲添加這些保護措施,歡迎您前往官網提交信息。
Android App Bundle
https://developer.android.google.cn/platform/technology/app-bundle
前往官網提交信息
http://g.co/play/integrityprotection?
公平性
對于提供應用內購買的游戲來說,公平的 "游戲內經濟體系"?不僅有助于確保最佳的整體玩家體驗,還能為您帶來持續的業務增長。為了在游戲中取得不正當優勢或謀取經濟利益,不良行為者可能會以某些方式操控交易或商品,這將會對其他玩家和您的業務造成不良影響。您可以在游戲內集成由 Google Play Billing 提供的豐富工具,幫助 Google 檢測并打擊欺詐性交易和退款濫用行為。
Google Play Billing
https://developer.android.google.cn/distribute/play-billing?
驗證購買
在應用設計允許的范圍內,請您盡可能將敏感數據和邏輯移至后端服務器,其中包括應用內購驗證。客戶端中的數據和邏輯越多,就越容易遭到逆向工程攻擊。當您驗證購買時,請向游戲服務器發送購買 ID,并確認該 ID 之前并未被使用過。每次向用戶提供所購商品的訪問權限之前,請務必先通過 Play Developer API 向 Google Play 驗證該購買交易的合法性。
此外,您還可以在啟動購買時將經過混淆處理的帳號和個人資料 ID 傳遞給 Google Play,從而確保購買交易歸因于同一個游戲賬號或角色個人資料。當您驗證購買時,請向后臺端服務器發送這些 ID,以確保商品與發起購買交易的用戶正確匹配。
購買交易歸因
https://developer.android.google.cn/google/play/billing/developer-payload#attribute?
虛假購買
為了提高 Google Play 檢測和阻止游戲中欺詐性購買的能力,我們建議您在每個購買請求中加入一些有關購買者的非個人識別信息。具體來說,您可以使用這些方法將經過混淆處理的賬戶 ID 附加到用戶的每個購買請求中,如果您開發了多個游戲,則可在所有游戲內再添加一個可代表用戶的個人資料 ID。Google 的風險引擎會根據這些 ID 評估當前交易是否屬于欺詐性購買,并在二次銷售行為發生前加以阻止。我們已經從頂尖開發者那里獲得了許多積極的反饋: 在使用該 Google Play Billing 特性后,欺詐事件最高減少了 30%,退款損失最高降低了 50%。
使用這些方法
https://developer.android.google.cn/google/play/billing/security#fraud
退款商品的狀態
現在,游戲可通過 Google Play 的一項測試特性提供更多有關應用內購買的信息。Play 會根據這些信息制定出更為合理的退款決策。該特性可幫助我們簡化退款流程并減少濫用行為的發生,例如更輕易地識別對已用商品多次申請退款的用戶。當用戶提交退款請求時,Google Play 會向您的游戲傳遞該請求的相關信息,包括退款理由。您的游戲隨后可分享用戶所購商品的狀態,例如商品是否已被使用,然后再建議是否批準此項請求。通過這些信息,Google Play 可以幫您做出恰當的退款決定。目前僅有部分合作伙伴參與了該特性的測試工作。如果您想獲取更多相關資訊或者希望我們今后能夠向更多開發者開放該特性,請咨詢您的合作伙伴經理。
無效購買
借助 voided purchases API,您可以隨時向 Google Play 請求用戶已退款的應用內購買列表。您可以根據這些信息更新用戶賬戶中的商品,移除已退款的商品或對用戶體驗作出其它更改。這不僅有助于游戲內商品的保值,還能有效防止濫用行為的發生。超過 80% 的頂尖開發者已經在自己的游戲中集成了 voided purchases API,其中部分開發者向我們反饋表示,該 API 為他們減少了 80% 的退款損失。以下為 voided purchases API 的一些使用技巧,希望能對您有所幫助:
請定期調用 voided purchases API,用于更新用戶所購項目列表;
從用戶賬戶移除已退款的商品;
告知用戶商品已被移除;
在收回商品失敗時,請及時采取應對措施。若多次失敗,請考慮升級響應措施,例如禁止用戶繼續購買;
如果用戶已經花掉了游戲內貨幣,可以考慮將其余額設置為負數;
對于游戲內貨幣余額為負數的賬戶,可考慮限制游戲內功能或服務。
voided purchases API
https://developer.android.google.cn/android-publisher/voided-purchases?
安全
安全是 Android 開發中十分重要的話題,而且牽涉范圍廣泛,因此本文僅作簡要探討。一旦攻擊者在您的游戲中發現漏洞并加以利用,便會給您帶來嚴重的后果,例如對玩家造成安全威脅,引發負面社會輿情,在某些情況下您甚至還需要面臨監管機構的罰款懲治。我們建議您在開發過程中,遵循安全性實踐指南并依照安全清單對游戲進行評估。與此同時,請您務必謹慎處理數據、權限及網絡流量方面的問題。
安全性實踐指南
https://developer.android.google.cn/topic/security/best-practices?
安全清單
https://developer.android.google.cn/docs/quality-guidelines/core-app-quality#sc?
第三方庫和 SDK
開發者經常會在游戲代碼中使用大量的第三方庫和 SDK,它們也帶來了嚴重的安全隱患。有些第三方庫自身含有惡意代碼,但是在大部分情況下,庫或 SDK 內的安全漏洞才是最大的風險所在。開發者應對游戲內所有內容 (包括第三方庫和 SDK) 負責,所以,由第三方程序導致的安全問題自然也在您責任范圍內。部分 SDK 會在開發人員不知情的情況下引發安全問題,為此 Google Play 已經下架了數款包含問題 SDK 的游戲。我們建議您在管理第三方庫和 SDK 時,遵循以下實踐指南:
對 SDK 可訪問的數據和設備信息進行分析,并確保 SDK 在訪問數據前已獲得用戶同意;
確保 SDK 支持最低級別的 targetSdkVersion;
確保 SDK 無法收集不可重置的設備標識符;
在游戲卸載后,從外部儲存移除所有 SDK 特定文件;
僅通過 HTTPS 協議向服務器傳遞信息。
請前往應用成功學院,了解更多有關 SDK 使用方法的實踐指南。
有關 SDK 使用方法的實踐指南
https://playacademy.exceedlms.com/student/activity/18797-build-and-distribute-privacy-friendly-apps?
Google Play 安全獎勵計劃
擁有大批玩家的游戲開發者不妨申請加入 Google Play 安全獎勵計劃。該漏洞賞金計劃提供了一定數額的獎金,用于激勵安全研究人員發現并負責任地披露漏洞。您可對這些漏洞進行修復,以便為玩家長期提供安全可靠的游戲環境。
Google Play 安全獎勵計劃
https://www.google.com/about/appsecurity/play-rewards/?
小結
不良行為者是任何產業都無法避免的問題,移動游戲行業自然也不例外。不論是小風險隱患,例如玩家只想在游戲中搶占不公平的優勢,還是嚴重的安全威脅,如不法人士為謀私利惡意操控游戲和玩家,Google Play 都將提供更多工具與服務,幫助開發者采取正確的應對措施并制定全方位反濫用策略,以求最大程度降低玩家和游戲業務的風險。歡迎各位開發者向我們分享您的反饋與建議,協助我們進一步優化產品或彌補不足之處。
關于完整性保護您有什么看法呢?請留言分享您的見解與心得。
出海同學會
您的游戲/應用有出海市場嗎?您了解如何使用 Google 提供的資源助力應用出海嗎?點擊下方進入 "出海同學會" 播客節目,收聽出海大咖們帶來的精彩分享與深度探討!
推薦閱讀
?點擊屏末?|?閱讀原文?|?即刻通過 Google Play 開啟成功出海之旅
總結
以上是生活随笔為你收集整理的在 Google Play 上保护您的游戏与用户的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 纸张大小
- 下一篇: 前端笔记1 HTML基础