You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

应用内购买验证:Google开发者指南示例app的verifyValidSignature方法解析

Google内购签名验证:BillingManager中的verifyValidSignature方法

在Google官方开发者指南提供的内购示例应用里,BillingManager类里专门封装了用于验证购买签名合法性的verifyValidSignature()方法,相关代码和说明如下:

/**
 * 验证购买是否使用开发者的公钥正确签名。
 *
 * 注意:强烈建议在后端执行此类检查,因为黑客若反编译/重新构建应用,可将此方法替换为"返回常量true"。
 */
private boolean verifyValidSignature(String signedData, String signature) {
    try {
        // 这里是核心的签名验证逻辑,需使用你的开发者公钥
        // 对传入的signedData和signature进行校验(比如借助Security类相关方法)
        // 示例中用return true作为占位,实际开发要替换为真实的校验结果
        return true;
    } catch (Exception e) {
        // 任何验证过程中的异常都直接判定为验证失败
        return false;
    }
}

必须重视的几个点

  • 后端验证才是安全的:划重点!这个方法如果只在客户端执行,安全性几乎为零——攻击者很容易反编译你的APP,把这个方法改成直接返回true,轻松绕过签名验证。所以一定要把签名校验逻辑放到你的后端服务器上,客户端只负责把购买得到的signedData和signature传给后端,由后端完成验证后返回结果。
  • 异常处理不能少:不管是公钥格式错误,还是签名解析失败,只要出现异常就直接返回false,绝对不能让异常导致验证逻辑被跳过。
  • 公钥别乱存:开发者的公钥千万别直接硬编码在客户端代码里,最好是由后端持有,或者通过安全的接口动态获取,避免被攻击者轻易提取。

内容的提问来源于stack exchange,提问作者Magnus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:32:32