按 IP 限流时为什么只信任可信代理

zjc 于 2026-08-20 发布

按客户端 IP 限流有一个前提:你要确定这个 IP 是真的。项目的 Sentinel 配置只允许可信代理的 X-Forwarded-For 生效,否则直接使用 TCP 远端地址。

一、伪造风险

X-Forwarded-For 是普通请求头,客户端可以随便填。如果无脑取第一个值,攻击者可以在每次请求里换一个假 IP,轻松绕过单 IP 限流。

二、判断直连地址

逻辑分两步:

  1. 读取 TCP direct address。
  2. 只有 direct address 在 trusted-proxies 里,才解析转发头。

本机回环地址默认可信,适配本机反向代理调试。

三、取第一个非 unknown 值

X-Forwarded-For 可能包含多跳代理:

client, proxy1, proxy2

项目取第一项作为候选客户端,并排除空白和 unknown。更复杂的多层代理需要明确每跳的追加规则。

四、可信代理列表要精确

不要为了方便填写整个网段。代理列表越宽,伪造面就越大;如果架构变化,也要同步维护这个列表。

五、经验总结

安全相关的请求头不能默认可信。来源识别的正确性,直接决定 IP 限流是否真的有意义。