Play 完整性 API 概览

Play 完整性 API 可帮助您检查互动和服务器请求是否来自运行在正版 Android 设备上的正版应用二进制文件。通过检测潜在的风险和欺诈性互动(例如来自被篡改的应用版本和不可信环境的互动),您的应用后端服务器可以采取适当措施来防止攻击和减少滥用。Play 完整性 API 还提供可选功能,可帮助您检测和应对其他威胁,例如已知恶意软件、未知屏幕截图和叠加层、滥用无障碍功能权限的应用、过度活跃以及来自同一设备的重复滥用行为。

当您的应用或游戏在经过 Play 保护机制认证的 Android 设备上使用时,Play 完整性 API 会提供一个响应,帮助您确定您是否正在与以下各项进行互动:

  • 正版应用二进制文件:确定您是否正在与 Google Play 识别的未修改的二进制文件进行互动。
  • 正版 Play 安装:确定当前用户帐号是否获得许可,即用户是否通过 Google Play 安装或购买了您的应用或游戏。
  • 正版 Android 设备:确定您的应用是否运行在经过 Play 保护机制认证的正版 Android 设备上(或 Google Play 游戏电脑版上的正版实例)。

您可以选择在 Play 完整性 API 响应中接收有关环境的信息,包括:

  • 应用访问风险:确定是否有正在运行的应用可用于捕获屏幕、显示叠加层或控制设备(例如,通过滥用无障碍功能权限)。
  • 已知恶意软件风险:确定 Google Play 保护机制是否已开启,以及它是否在设备上发现了有风险或危险的应用。

您还可以选择启用有助于检测过度活跃和重复滥用行为的功能:

  • 近期设备活动:确定设备近期是否发出了异常大量的请求,这可能表示存在自动化流量,并可能是攻击的迹象。
  • 设备召回(Beta 版):确定您是否正在与之前互动过的设备进行互动,即使您的应用已重新安装或设备已重置。

概览

当用户在您的应用中执行操作时,您可以调用 Play 完整性 API 来检查该操作是否发生在您的正版应用二进制文件中,该应用由 Google Play 安装,并运行在正版 Android 设备上。您还可以选择在响应中获取其他信息,这些信息可帮助您检测和应对导致滥用和欺诈、误用和作弊、未经授权访问以及攻击的各种威胁。

Play Integrity API Overview
flow

安全注意事项

遵循以下推荐做法,Play 完整性 API 可为您的应用提供最大价值:

制定反滥用策略

Play 完整性 API 在与其他信号结合使用时效果最佳,作为您整体反滥用策略的一部分,而不是作为您唯一的反滥用机制。将此 API 与您应用的其他适当安全最佳实践结合使用。默认情况下,您的应用每天在所有安装中总共可以发出多达 10,000 个请求。您可以请求提高您的每日上限

在采取行动之前,收集遥测数据并了解您的受众

在根据 Play 完整性 API 判决更改应用行为之前,您可以通过在不强制执行的情况下实现 API 来了解现有受众的当前情况。一旦您知道当前安装量返回了哪些判决,您就可以估算您计划的任何强制执行措施的影响,并相应地调整您的反滥用策略。

决定如何请求完整性判决

Play 完整性 API 提供两种请求和接收完整性判决的选项。无论您是发出标准请求、传统请求还是两者的组合,完整性判决响应都将以相同的格式返回。

标准 API 请求适用于任何应用或游戏,并且可以按需发出,以检查任何用户操作或服务器请求是否为真实请求。标准请求的延迟最低(平均几百毫秒),并且获得可用判决的可靠性高。标准请求利用智能设备端缓存,同时将针对某些类型攻击的保护委托给 Google Play。

请求完整性判决的原始方式(即传统 API 请求)也仍然可用。传统请求的延迟较高(平均几秒),并且您需要负责缓解某些类型攻击的风险。传统请求比标准请求使用更多用户数据和电池电量,因为它们会启动一次全新的评估,因此应不频繁地作为一次性检查来确定高度敏感或有价值的操作是否真实。如果您正在考虑发出传统请求并将其缓存以备后用,那么您应该改为发出标准请求以降低攻击风险。

下表重点介绍了两种请求类型之间的一些关键差异:

标准 API 请求 传统 API 请求
所需最低 Android SDK 版本 Android 5.0(API 级别 21)或更高版本 Android 4.4(API 级别 19)或更高版本
需要 API 预热 ✔️(几秒)
典型请求延迟 几百毫秒 几秒
潜在请求频率 频繁(按需检查任何操作或请求) 不频繁(针对最高价值操作或最敏感请求的一次性检查)
缓解重放和类似攻击 由 Google Play 自动缓解 使用具有服务器端逻辑的 nonce 字段

您可以在传统请求注意事项中查看包含更多差异的表格。

在适当的时机请求完整性判决

您应该在您要防御访问的操作或服务器请求发生的时间点尽可能接近地请求应用访问风险判决,以防止诈骗者规避您的应用执行的完整性检查。

使您的 API 请求难以复制

标准 API 请求有一个名为 requestHash 的字段,用于防止篡改和类似攻击。在此字段中,您应包含应用请求中所有相关值的摘要。请遵循关于如何使用内容绑定的指南,以保护您的应用的标准请求。

传统 API 请求有一个名为 nonce(一次性数字的缩写)的字段,用于防止某些类型的攻击,例如重放攻击和篡改攻击。请遵循关于如何生成 nonce 的指南,以保护您的应用的传统请求。

避免缓存完整性判决

缓存完整性判决会增加代理攻击的风险,这种攻击是指不良行为者将来自良好设备的判决重新用于其他环境中的滥用目的。您不应缓存响应,而是可以发出标准 API 请求来按需获取判决。

制定分层强制执行策略

Play 完整性 API 的完整性判决有一系列可能的响应,这使得构建具有多个强制执行层的反滥用策略成为可能。您可以通过配置应用后端服务器根据每个可能的响应或响应组表现出不同的行为来实现此目的。

还可以通过选择在 Play 管理中心的 API 响应中接收其他设备标签,根据设备可信度对强制执行策略进行分层。每台设备将返回其满足条件的所有标签。例如,在选择接收所有设备标签后,您可以选择比仅返回 MEETS_BASIC_INTEGRITY 的设备更信任返回 MEETS_STRONG_INTEGRITYMEETS_DEVICE_INTEGRITYMEETS_BASIC_INTEGRITY 的设备。在每种情况下,您可以从服务器做出不同的响应。

从您的服务器向您的应用发送一系列响应

具有一系列决策结果比为每个响应从服务器向应用发送二元允许/拒绝响应更难复制。例如,您可以使用一系列相关响应,例如“允许”、“有限允许”、“完成 CAPTCHA 后有限允许”和“拒绝”。

在保护用户隐私的同时,使用设备召回功能检测重复滥用行为

设备召回功能使应用能够以保护用户隐私的方式存储和召回与特定设备关联的一些自定义数据。数据存储在 Google 的服务器上,即使您的应用重新安装或设备重置后,您的应用也能可靠地召回每个设备的数据。这为您提供了一种可靠的方式来重新识别过去曾发现滥用的设备,以便您可以采取措施并阻止其再次用于滥用。您可以定义组成设备召回数据的三个值的含义:

  • 您可以将它们用作最多三个单独的标志或布尔值。例如,这些值可以表示设备是否已创建帐号、是否已兑换免费试用,或者是否曾因严重滥用而闻名。
  • 另外,您可以将所有值状态组合成最多八个自定义标签,例如,一个标签用于所有三个值未修改时的默认状态,七个标签具有自定义含义。这允许您根据定义的行为或操作将所有设备细分为最多八个组。在此场景中,三个 writeDates 中最新更新的日期表示您上次更新标签的时间。

另外,在使用设备召回数据时,请记住前提条件和其他注意事项

使用近期设备活动检测大规模滥用行为

使用 Play 完整性 API 中的近期设备活动功能来查找请求大量完整性令牌的设备。高活跃度滥用者通常会从真实设备生成有效的证明结果,并将其提供给机器人,以自动化对已 root 设备和模拟器的攻击。您可以使用近期设备活动级别来检查您的应用在过去一小时内在该设备上生成了多少证明。

显示可操作的错误消息

在可能的情况下,向用户提供有用的错误消息,并告知他们可以采取哪些措施来解决问题;例如重试、启用互联网连接或检查 Play 商店应用是否为最新版本。

针对意外问题或中断制定计划

Play 状态信息中心显示了 Play 完整性 API 的服务状态信息以及任何中断和停机信息。您应该提前计划,在 Play 完整性 API 发生大规模中断的极小可能性事件中,您的后端服务器如何运行。请注意,当特定设备的 Android 平台密钥证明密钥被撤销时,您的后端服务器也应该准备好运行。

考虑端到端企业欺诈解决方案

寻求完整欺诈和机器人管理解决方案的企业客户可以购买适用于移动设备的 reCAPTCHA Enterprise,其中包括适用于 Android 的 SDK,可向开发者提供欺诈风险评分。reCAPTCHA Enterprise 自动包含 Play 完整性 API 信号,并将其与 reCAPTCHA 网络和应用信号结合起来,为客户提供开箱即用的无摩擦、无感欺诈管理解决方案。它还可以为 Play 完整性 API 不可用的 Android 应用提供保护。

访问高价值或敏感功能时,对有风险的流量发起质询

识别您应用或游戏中的高价值或敏感操作,并使用 Play 完整性 API 加以保护,而不是直接拒绝访问。在可能的情况下,在允许高价值操作继续之前,对有风险的流量发起质询。例如,当应用访问风险表明有正在运行的应用可以捕获屏幕时,请先要求用户停用或卸载可以捕获屏幕的应用,然后再允许他们继续使用您想要保护的功能。

服务条款和数据安全

访问或使用 Play 完整性 API 即表示您同意《Play 完整性 API 服务条款》。请在访问 API 之前阅读并理解所有适用的条款和政策。

Google Play 设有一个数据安全部分,供开发者披露其应用的数据收集、共享和安全实践,以确保用户知情。为帮助您填写数据表单,请参阅有关Play 完整性 API 如何处理数据的信息。