SSRF 防护
Server-Side Request Forgery Protection
防止服务端发起对内网资源的非授权请求,保护内部服务安全
子问题
1.协议白名单校验
2.DNS 解析后 IP 检查
3.私有/特殊 IP 段拦截
4.localhost 和 IPv6 回环检测
5.重定向链安全
6.IPv4-mapped IPv6 地址绕过检测
7.响应体大小限制防止资源耗尽
8.递减超时策略防止重定向链累积延迟
各项目的解法1 solutions
Signals
横向对比
| 维度 | ClawFeed |
|---|---|
| 防护架构 | 前置断言函数 assertSafeFetchUrl,在 httpFetch 第一行强制调用 |
| IP 检查范围 | IPv4 全 RFC 1918 + 链路本地 + 组播 + IPv6 ULA/回环/mapped |
| DNS 解析策略 | lookup(host, {all:true}) 全量检查所有 A/AAAA 记录 |
| 重定向保护 | 递归调用 httpFetch,每跳重新执行 assertSafeFetchUrl,限 3 次 |
| 实现依赖 | 零第三方依赖,仅用 Node.js 内置 dns/promises + net.isIP |
| 响应限制 | 200KB 响应体上限 + 5s 超时 + 递减超时策略 |
最佳实践
1.DNS 解析后检查所有返回 IP
2.覆盖 IPv4 和 IPv6 私有网段
3.限制重定向次数和超时时间
4.前置断言模式确保所有出站请求不可绕过检查
5.对格式非法的 IP 地址默认视为危险(fail-closed)
6.零第三方依赖减少供应链攻击面