Play Integrity API 概览

Play Integrity API 有助于保护您的应用和游戏,使其免受可能存在风险的欺诈性互动(例如欺骗和未经授权的访问)的危害,让您能够采取适当措施来防范攻击并减少滥用行为。

当您的应用在搭载 Android 4.4(API 级别 19)或更高版本的设备上使用时,Play Integrity API 会提供已签名且加密的响应,其中包含以下信息:

  • 正版应用二进制文件:确定您是否正在与 Google 可识别的未经修改的二进制文件进行互动。
  • 正规 Play 安装:确定当前用户帐号是否已获得许可,这意味着用户在 Google Play 上安装或购买了您的应用或游戏。
  • 正品 Android 设备:告知您应用是否正在由 Google Play 服务提供支持的正品 Android 设备上运行。

服务条款

访问或使用 Play Integrity API 即表示您同意 Play Core 软件开发套件服务条款。请先阅读并了解所有适用的条款及政策,然后再访问该 API。

前提条件

如需将 Play Integrity API 集成到您的应用中,请执行以下操作:

安全注意事项

虽然 Play Integrity API 可以增强安全性并防止篡改,但只有遵循本部分中列出的各项最佳做法,才能让它为您的应用带来带来最大价值。

制定反滥用策略

将 Play Integrity API 与其他信号一起使用时,让其作为整体反滥用策略的一部分,而不是作为唯一的反滥用机制,这时该 API 效果最佳。请针对您的应用结合使用该 API 以及其他相关的安全性最佳做法

请勿过于频繁地获取完整性令牌

调用该 API 应该主要是为了保护高价值的非周期性操作,这些操作是用户体验不可或缺的一部分(如登录服务或加入多人游戏服务器)。

平均而言,每个活跃用户每天调用一次是合理的,不过在一天内执行多项高价值操作的用户可能有必要调用多次。

谨慎生成 Nonce

Nonce 应该是唯一的,并且攻击者无法预测。

使用安全的服务器环境

在安全的服务器环境中执行所有解密和验证。如果您的客户端应用公开了任何安全性详细信息,攻击者便可以从您的 APK/代码库中提取和移除这些详细信息。

从服务器向应用发送多个决策

与其将单个通过/失败响应从服务器发送回应用,不如发送多个更难复制的决策结果和信号。例如,您可以使用一系列相关的响应,如“允许”、“允许但有限制”、“reCAPTCHA 完成后允许但有限制”和“拒绝”。

采用分层强制执行策略

在 Play 管理中心内,您可以选择接收其他设备标签,以便制定具有多个强制执行层级的反滥用策略。在您选择接收其他标签后,如果满足所有标签条件,完整性响应就会包含针对同一设备的多个标签。因此,您可以准备您的后端服务器,使其根据可能的响应范围表现出不同的行为。

例如,与仅返回 MEETS_BASIC_INTEGRITY 的设备相比,返回 MEETS_BASIC_INTEGRITYMEETS_DEVICE_INTEGRITYMEETS_STRONG_INTEGRITY 的设备可能更可信,并且您可以对服务器响应进行相应调整。这可以与关于用户帐号是 LICENSED 还是 UNLICENSED 的不同操作结合使用。

使用指数退避算法重试

环境条件(如易断线的互联网连接或重载的设备)可能会导致设备完整性检查失败。这样可能会导致系统不为本来可信的设备生成任何标签。为了缓解这些情况,请务必包含使用指数退避算法进行重试的选项。

API 用法概述

图 1. 概要介绍 Play Integrity API 的序列图。

大体上讲,您的应用或游戏将按以下方式来使用 Play Integrity API:

  1. 应用的服务器端后端生成一个唯一的 Nonce,并将其发送到客户端逻辑。剩余步骤会将该逻辑成为您的“应用”。
  2. 您的应用调用 Play Integrity API,并传入 Nonce。
  3. 您的应用收到来自 Play Integrity API 的已签名且加密的判定。
  4. 您的应用将已签名且加密的判定传递到应用后端。
  5. 应用后端将判定发送到 Play 服务器。Play 服务器解密并验证该判定,并将结果传递到应用后端。
  6. 应用后端根据令牌载荷中包含的信号来决定如何继续操作。
  7. 应用后端将决策结果发送到您的应用。

API 使用层

对该 API 的请求受每个应用每天的最大请求次数制约,该最大值由为发起调用的应用分配的使用层确定。下表显示了不同的层级:

表 1. Play Integrity API 使用层
使用层 每天允许的 API 调用次数 条件要求
标准 最多 10000 次 适用于采用任何分发渠道的应用
提高后 可超过 10000 次的上限,需获得批准 必须正确实现 API 逻辑(包括重试)
适用于在使用 Google Play 的同时,还使用其他任何分发渠道的应用

就 API 使用而言,如果在 Google Play 和其他分发渠道上采用相同的软件包名称,则视为单个应用。您可以针对具有不同软件包名称的多个应用使用一个 Google Cloud 项目 ID。如果您这样做,就 API 使用而言,系统会将这些应用视为单个应用。

查看使用层

为了帮助您评估与 Play Integrity API 的互动频率,Play 管理中心会显示应用的使用层。如需查看该使用层,请执行以下操作:

  1. 登录 Play 管理中心。
  2. 选择一个使用 Play Integrity API 的应用。
  3. 在左侧菜单中的版本部分中,依次转到设置 > 应用完整性
  4. Integrity API 标签页的 API 设置部分中,查找 API 使用层属性。该属性的值可显示 API 使用层。

更改使用层

如需请求更改应用的使用层,请与 Play 管理中心的开发者支持团队联系。