The Android Developer Challenge is back! Submit your idea before December 2.

安全性最佳做法

在您设计 Google Play 结算服务的实现时,请务必遵循本文档中介绍的安全性最佳做法。这些准则适用于使用 Google Play 结算服务的所有人。

验证购买详情

强烈建议您在信任的服务器上验证购买详情。不过,如果您无法使用服务器,也依然可以在设备上的应用中验证这些详细信息。

在服务器上验证

通过在服务器上实现签名验证逻辑,您可以使攻击者难以对您的 APK 文件进行逆向工程。这样可以保持您的逻辑检查的签名的完整性。

要在可信服务器上验证购买详情,请完成以下步骤:

  1. 确保设备到服务器的握手过程是安全的。
  2. 检查返回的数据签名和 orderId,并验证 orderId 是否是您之前未处理的唯一值。
  3. 验证您应用的密钥是否已为您处理的 INAPP_PURCHASE_DATA 签名。
  4. 使用 Google Play Developer API 中的 ProductPurchase 资源(针对应用内商品)或 SubscriptionPurchase 资源(针对订阅)验证购买回复。这一步特别有用,因为这样一来,攻击者便无法创建对您的 Play 商店购买请求的模拟回复。

保护您的未锁定内容

为防止恶意用户重新分发您未锁定的内容,请勿将这种内容放入您的 APK 文件中,而是执行以下操作之一:

  • 使用实时服务发送内容,例如内容 Feed。通过实时服务发送内容可以帮助您确保内容始终保持最新状态。
  • 使用远程服务器发送内容。

通过远程服务器或实时服务发送内容时,您可以将未锁定内容存储在设备内存中或设备的 SD 卡上。如果将内容存储在 SD 卡上,请务必将内容加密并使用设备专用加密密钥。

针对商标和版权侵犯采取行动

如果您使用远程服务器发送或管理内容,请确保当用户访问内容时,应用能够验证未锁定内容的购买状态。这样您可以根据需要撤消使用,并最大限度地减少盗版。

如果您看到自己的内容在 Google Play 上被重新分发,请立即果断地采取行动。如需了解更多详情,请参阅版权帮助中心内的版权常见问题解答页面。