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

Spring Boot如何验证请求来自指定Android应用

验证Android应用请求的可行方案

完全可行,但不存在绝对能阻止所有伪造请求的方案,只能通过多种手段组合大幅提高伪造门槛,以下是几种无需在APK中嵌入敏感密钥的有效方法:

  • Android应用签名校验
    服务端预先存储自己发布的Android应用的签名哈希值(比如SHA-256),要求客户端在每次请求时将自身应用的签名哈希作为请求头(如X-App-Signature)发送。Spring Boot端通过拦截器提取该值,与预存的合法哈希对比,不匹配则直接拒绝请求。
    实现细节:Android端可通过PackageManager获取自身签名的哈希值,这个过程无需嵌入密钥;虽然签名哈希可被逆向获取,但伪造者要模拟这个请求,必须重新打包应用并绕过系统的签名校验,普通curl调用无法轻易做到。

  • 动态环境特征校验
    检查请求的环境特征,筛选非Android应用发起的请求:

    • 校验请求头中的User-Agent,合法Android应用的请求通常带有系统版本、应用包名或网络库标识(如OkHttp的OkHttp/4.9.3);
    • 要求客户端附加仅真实Android环境能生成的临时信息(比如系统Build的部分动态字段),服务端对这些信息做合理性校验,避免固定值被伪造。
  • 请求行为模式校验
    通过分析合法应用的请求行为逻辑拦截异常请求:

    • 校验请求时序:合法应用的API调用通常有固定顺序(比如先登录再拉取数据),服务端记录会话的请求序列,不符合则拦截;
    • 限制请求频率:对单个IP或会话设置请求频率阈值,curl等批量调用容易触发限制;
    • 校验参数关联性:部分参数需基于前一个请求的返回值生成,伪造请求很难模拟这种关联逻辑。
  • 绑定用户身份验证
    将应用请求验证与用户身份绑定,要求用户先完成手机号/验证码等登录流程,服务端生成会话令牌(如JWT),后续所有请求必须携带该令牌。这种方式虽不能直接拦截伪造的应用请求,但能确保只有合法用户的请求被处理,大幅降低伪造请求的实际价值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 21:40:58