Play Integrity API 可帮助您检查互动和服务器请求是否来自在正版 Android 设备上运行的正版应用二进制文件。通过检测可能存在风险的欺诈性互动(例如,来自被篡改的应用版本和不可信的环境),应用的后端服务器可以采取适当的措施来防范攻击并减少滥用行为。
当您的应用或游戏在搭载 Google Play 商店 且由 Google Play 服务提供支持的 Android 设备上使用时,Play Integrity API 会提供响应,帮助您确定您是否正在与以下各项互动:
- 正版应用二进制文件:确定您是否正在与 Google Play 可识别的未经修改的二进制文件进行互动。
- 正规 Play 安装:确定当前用户账号是否已获得许可,这意味着用户在 Google Play 上安装或购买了您的应用或游戏。
- 正版 Android 设备:确定您的应用是否在由 Google Play 服务提供支持的正版 Android 设备(或 Google Play 游戏电脑版的正版实例)上运行。
概览
当用户在您的应用中执行操作时,您可以调用 Play Integrity API 以检查操作是否发生在通过 Google Play 安装且在正版 Android 设备上运行的正版应用二进制文件中。如果不是,应用的后端服务器可以决定如何防范滥用和欺诈、不当使用和欺骗、未经授权的访问和攻击等问题。
安全注意事项
如果您遵循以下推荐做法,Play Integrity API 可为您的应用带来最大价值:
制定反滥用策略
将 Play Integrity API 与其他信号一起使用时,让其作为整体反滥用策略的一部分,而不是作为唯一的反滥用机制,这时该 API 效果最佳。请针对您的应用结合使用该 API 以及其他相关的安全性最佳实践。默认情况下,您的应用每天最多可以针对所有安装发出总共 10,000 次请求。您可以请求提高每日上限。
确定如何请求完整性判定
Play Integrity API 提供两种用于请求和接收完整性判定的选项。无论您是发出标准请求、传统请求,还是结合利用这两种请求,完整性判定的响应都会以相同的格式返回。
标准 API 请求适用于任何应用或游戏,可以按需发出,用于检查用户操作或服务器请求是否真实。标准请求的延迟时间最短(平均几百毫秒),并且获得可用判定结果的可靠性很高。标准请求利用设备端的智能缓存,同时将针对特定攻击类型的防护任务委托给 Google Play。
传统 API 请求(即请求完整性判定的原始方式)也可继续使用。传统请求的延迟时间较长(平均几秒钟),并且您要负责缓解某些攻击类型的风险。与标准请求相比,传统请求会使用更多的用户数据流量和电量,这是因为此类请求会发起新的评估。因此,不应频繁发出此类请求,而应将其作为一种一次性手段,用于检查敏感性或重要性非常高的操作是否真实。如果您考虑发出传统请求,然后将其缓存以供日后使用,则应改为发出标准请求,以降低遭到攻击的风险。
使 API 请求难以复制
标准 API 请求具有一个名为 requestHash
的字段,用于防范篡改和类似攻击。在该字段中,您应添加应用请求中所有相关值的摘要。请遵循有关如何使用内容绑定的指南来保护应用的标准请求。
传统 API 请求具有一个名为 nonce
(“number once”的缩写)的字段,用于防范某些类型的攻击,例如重放攻击和篡改攻击。请遵循有关如何生成 Nonce 的指南来保护应用的传统请求。
避免缓存完整性判定
缓存完整性判定会增加发生代理攻击的风险,在这种攻击中,作恶方会重复使用来自正常设备的判定结果,以便在其他环境中滥用。您可以发出标准 API 请求以按需获取判定结果,而不是将响应缓存起来。
采用分层强制执行策略
Play Integrity API 的完整性判定包含一系列可能的响应,使您可以制定具有多个强制执行层级的反滥用策略。为此,您可以将应用的后端服务器配置为根据每个可能的响应或响应组而表现出不同的行为。
此外,您还可以通过 Play 管理中心选择在 API 响应中接收其他设备标签,以便根据设备可信度对您的强制执行策略进行分层。每台设备都将返回其满足条件的所有标签。例如,在选择接收所有设备标签后,您可以选择与仅返回 MEETS_BASIC_INTEGRITY
的设备相比,更信任同时返回 MEETS_STRONG_INTEGRITY
、MEETS_DEVICE_INTEGRITY
和 MEETS_BASIC_INTEGRITY
的设备。在每种情况下,您都可以通过服务器进行不同的响应。
从服务器向应用发送一系列响应
与针对每个响应将二进制“允许”/“拒绝”响应从服务器发送回应用相比,拥有一系列决策结果更难以复制。例如,您可以使用一系列相关的响应,如“允许”“允许但有限制”“CAPTCHA 完成后允许但有限制”和“拒绝”。
显示可执行操作的错误消息
尽可能向用户提供有用的错误消息,并告诉用户可以采取什么措施来解决问题,例如重试、启用互联网连接或检查 Play 商店应用是否为最新版本。
针对意外问题或服务中断制定计划
Play 状态信息中心会显示有关 Play Integrity API 服务状态的信息,以及任何服务暂停和中断的相关信息。您可以预先配置您希望后端服务器在极少数情况下 Play Integrity API 发生大规模服务中断时如何运行。
考虑端到端企业欺诈解决方案
寻求完整的欺诈和机器人管理解决方案的企业客户可以购买移动版 reCAPTCHA Enterprise,其中包含的适用于 Android 的 SDK 会向开发者提供欺诈风险评分。reCAPTCHA Enterprise 自动包含 Play Integrity API 信号,并将这些信号与面向客户的 reCAPTCHA 网络和应用信号相结合,提供开箱即用、隐蔽又顺畅的欺诈管理解决方案。此外,它还可向不支持 Play Integrity API 的 Android 应用提供保护。
服务条款和数据安全
访问或使用 Play Integrity API 即表示您同意接受《Play Integrity API 服务条款》。请先阅读并了解所有适用的条款及政策,然后再访问该 API。
Google Play 有一个“数据安全”部分,供开发者披露其应用的数据收集、分享和安全做法,以便用户及时了解相关信息。为了帮助您填写数据表单,请参阅有关 Play Integrity API 如何处理数据的信息。