问题域/PD-158

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.零第三方依赖减少供应链攻击面