提醒:自 2022 年 8 月 2 日起,所有新應用程式都必須採用帳款服務程式庫 4.0 以上版本 自 2022 年 11 月 1 日起,現有應用程式的所有更新都必須採用帳款服務程式庫 4.0 以上版本。瞭解詳情

打擊詐欺與濫用行為

透過集合功能整理內容 你可以依據偏好儲存及分類內容。

隨著您的應用程式日漸普及,它也可能會吸引不肖人士濫用應用程式。本主題將提供一些您應該採用的建議,以協助防範針對帳單整合的這類攻擊,並減少濫用應用程式造成的風險。

將敏感邏輯移至後端

如果您的應用程式設計允許,請將敏感資料和邏輯移至由您本人控制的後端伺服器。前端裝置上的資料與邏輯越多,被修改或竄改的機率就越高。

舉例來說,線上西洋棋遊戲應驗證後端中的所有動作,而非信任前端一定會傳送合法動作。

此外,如果您發現安全漏洞或安全性問題 (因系統設計有所不同),在後端 (而非前端) 進行偵錯、修正及推出更新可能會比較容易。

授權前請先驗證購買交易

有一種要在後端處理敏感資料和邏輯的特殊情況是購買驗證。使用者購買交易後,您應該執行以下操作:

  1. 將對應的 purchaseToken 傳送至後端。這表示,您應針對所有購買交易維持所有 purchaseToken 值的記錄。
  2. 確認目前購買的 purchaseToken 值與先前的任何 purchaseToken 值都不相符。purchaseToken 全域唯一,因此您可以放心將這個值做為資料庫中的主鍵。
  3. 使用 Google Play Developer API 中的 Purchases.products:getPurchases.subscriptionsv2:get 端點,向 Google 驗證購買交易是否符合規定。
  4. 如果應用程式內產品或訂閱項目購買交易合規,且從未使用過,就可以授予對交易內容的權限。
  5. 針對訂閱項目,在 Purchases.subscriptionsv2:get 中設定 linkedPurchaseToken 時,請一併將 linkedPurchaseToken 從資料庫中移除並撤銷授予 linkedPurchaseToken 的授權,確保不會針對同一筆購買交易向多位使用者授予權限。
  6. 只有當購買交易狀態為 PURCHASED 時,您才應該進行授權,且必須正確處理 PENDING 購買交易。如果 CANCELED 的購買次數激增,您可以在購買交易仍處於 PENDING 狀態時進行授權。詳情請參閱處理待處理的交易

保護已解鎖的內容

為了防止不肖人士重新發行您未解鎖的內容,請勿將這類內容加綁在您的 APK 檔案中。建議改用下列方法:

  • 使用即時服務來傳送內容,例如內容資訊提供。透過即時服務來傳送內容也能確保持續更新內容。
  • 透過遠端伺服器來傳送內容。

如果透過遠端伺服器或即時服務來傳送內容,可以將未解鎖內容儲存在裝置記憶體中或是裝置的 SD 卡上。如果將內容儲存在 SD 卡上,請務必使用裝置專用加密金鑰對內容進行加密。

偵測並處理無效交易

「作廢的購買交易」是指已取消、已撤銷或已拒付的購買交易。如果作廢的購買交易先前已將應用程式內產品或其他內容授予使用者,可以使用 Voided Purchases API 瞭解交易作廢的原因,並取得任何相關可收回內容。

作廢應用程式內產品和訂閱項目購買交易的原因有很多,包括:

  • 使用者、開發人員或 Google 取消購買交易。請注意,如果是訂閱項目,這是指取消訂閱項目的「購買交易」,而非「取消訂閱」
  • 購買交易遭到拒付。
  • 應用程式開發人員取消使用者訂單或退款,並在主控台選中「撤銷」選項。

您可以根據購買交易作廢的原因,並考慮使用者的歷史購買行為資料,據此決定要採取何種行動。建議實作下列一或多項動作:

  • 執行收回作業:當購買交易作廢時,可以將未使用的商品收回,視同從未出售的商品。舉例來說,如果購買遊戲代幣的交易已作廢,您可以收回已授權給使用者的遊戲代幣。如果使用者已用完遊戲代幣,可以考慮將代幣餘額設為負值,並限制應用程式活動和日後的購買交易,直到代幣餘額變為正值。
  • 多次發出警告:可以考慮針對初犯採取比較溫和的動作,例如顯示應用程式內警告。針對累犯,請考慮採用更嚴厲的措施。
  • 暫時停用購買功能:與多次發出警告的方式類似,請考慮針對購買交易作廢的使用者停用購買功能,直到您能更徹底地調查出這些購買交易的作廢原因。
  • 暫時或永久禁止存取應用程式:如果屢次發生執行惡意活動的極端情況,可以考慮暫時或永久禁止相關人士存取您的應用程式。
  • 經常呼叫 Voided Purchases API:當您偵測到一或多筆作廢的購買交易時,不妨提高 Voided Purchases API 的呼叫頻率,以便在使用者使用前先行收回所售商品。如要進一步瞭解 Voided Purchases API 配額,請參閱 Voided Purchases API 說明文件

協助 Google 事先偵測詐欺行為

不肖人士會透過建立多個 Google 帳戶和應用程式內帳戶來隱藏自己的活動,進而執行某些類型的詐欺行為。

如果將 builder 中的 setObfuscatedAccountIdsetObfuscatedProfileId 方法用於 BillingFlowParams,便可以協助 Google 將 Google 帳戶對應至應用程式內帳戶。

Google 會運用這類資料偵測可疑行為,並在某些類型的詐欺交易完成前,先行封鎖這些交易。

針對商標侵權和版權侵權行為採取相關行動

如果使用遠端伺服器來傳送或管理內容,請將您的應用程式設定為:在使用者每次存取未解鎖內容時,驗證這類內容的購買狀態。如此一來,您就能在必要時撤銷使用權,並減少發生盜版行為。如果您發現自己的內容在 Google Play 重新發行,請務必迅速果斷地採取行動。詳情請參閱版權說明中心上的「常見版權問題」頁面。