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

如何阻止浏览器直接访问服务端图片/PDF 仅允许Android应用访问

Android应用专属图片访问防护方案

以下是可落地的多层防护方案,搭配你已有的随机哈希文件名机制,可以有效避免外部渠道非法访问图片资源:

1. 签名+时效校验机制(核心防护)

  • 客户端和服务端提前约定好唯一的加密密钥,密钥需要做客户端混淆加固,避免被反编译提取
  • 客户端发起图片请求时,在自定义请求头中携带两个参数:
    • Req-Timestamp:当前请求的时间戳
    • Req-Sign:将「时间戳+当前请求的图片路径+约定密钥」通过SHA256/MD5生成的哈希值
  • 服务端收到请求后先做两层校验:
    1. 校验时间戳是否在5分钟有效期内,超出则直接返回403,避免重放攻击
    2. 用和客户端完全一致的规则生成签名,和请求携带的Req-Sign比对,不一致直接拒绝返回资源
  • 可以额外添加自定义User-Agent作为辅助校验,但不要单独依赖该规则,因为UA极易被伪造

2. 账号绑定动态令牌校验

  • 客户端用户登录成功后,服务端下发和用户账号绑定的短期有效访问令牌(Token),有效期可根据业务需求设置为几小时到几天不等
  • 所有图片请求都需要在请求头中携带该Token,服务端校验Token的有效性、所属用户权限,校验通过才返回图片
  • 该机制可以避免签名泄露后被长期滥用,Token过期后自动失效,也可以随时在服务端拉黑异常账号的Token

3. 客户端逆向防护

为了避免攻击者反编译App获取签名规则、密钥,需要做客户端加固:

  • 核心的签名生成、密钥存储逻辑用NDK写到so层,大幅度提高逆向成本
  • 自定义请求头的名称使用无意义的字符串,不要用sign、token这类辨识度高的命名
  • 对Android安装包做代码混淆、第三方加固处理,隐藏核心业务逻辑

4. 服务端附加防护

  • 对图片接口做访问频率限制,同一个IP/同一个用户单位时间内请求超过阈值直接临时拉黑,避免被批量爬虫爬取资源
  • 所有图片资源不要存放在Web服务的静态公开目录,由后端接口统一鉴权后读取资源返回流,避免出现路径遍历类的漏洞

不存在100%无法破解的防护方案,但是通过多层机制叠加,可以把破解成本抬升到远高于图片资源本身的价值,足以抵御绝大多数的非法访问场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 04:45:04