安全审计核心是管控 fetch 的调用主体、方式与目标:严格校验动态 url(白名单至二级域名)、高危操作禁用前端直连(须经后端代理+一次性 token)、剥离客户端可篡改凭证(jwt 全字段验签)、运行时监控拦截异常请求并结合 csp 限制连接源。

Fetch 本身是中性的网络请求工具,安全审计关注的不是它“做了什么”,而是它“被谁、以什么方式、向哪里”发起请求。防范恶意请求的关键,在于切断攻击者操控 fetch 的路径,而不是限制 fetch 功能本身。
严格校验请求目标 URL
防止服务器端请求伪造(SSRF)和跳转劫持的核心动作。所有动态拼接的 URL 都必须经过白名单域名验证,不能只检查协议或简单字符串包含。
- 用 new URL() 解析后比对 hostname,而非正则匹配或 substring 查找
- 白名单应精确到二级域名(如 api.pay.example.com),避免宽松通配(如 *.example.com)
- 禁止传入用户可控字段直接构造 URL,例如:fetch(`/user/${id}/profile`) 中的 id 若未校验格式与范围,可能被替换为恶意地址
禁用前端敏感操作的直接调用能力
审计重点不是“能不能发请求”,而是“有没有必要在前端发这个请求”。涉及权限变更、资金操作、数据删除等高危动作,不应由前端 fetch 直连后端接口。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 这类接口必须走后端代理层,由服务端统一鉴权、限流、日志和风控决策
- 前端仅调用语义明确的中间接口(如 /v1/action/submit-order),不暴露真实资源路径或参数结构
- 关键操作需附带服务端签发的一次性 token(非前端生成的 nonce),用于防重放与来源绑定
剥离客户端可篡改的身份凭证
前端存储的 token、cookie 或 header 值,在审计中视为完全不可信。恶意请求往往源于这些凭证被窃取或伪造后复用。
- JWT 类 token 必须由后端用密钥验签,且校验 exp、iss、aud、sub 全字段
- 敏感接口拒绝接受 Authorization: Bearer xxx 直连,改用后端透传 + 双向证书或设备指纹绑定
- 避免在 fetch headers 中硬编码 API key、secret 等长期凭证——它们一旦泄露即永久失效
监控与响应式拦截机制
静态代码审计之外,运行时行为监控是发现异常请求的关键补充手段。
- 通过 monkey patch 覆盖全局 fetch,记录所有请求的 origin、URL、method、headers 大小、响应时间,异常模式实时上报
- 对高频、短间隔、相同 body 的 POST 请求自动触发熔断,返回 429 并记录客户端 fingerprint
- 结合 CSP 的 connect-src 指令,从浏览器层面禁止 fetch 连接到非授权域名(需配合后端 HTTP 头下发)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










