fn ip_from_x_forwarded_for(
value: &str,
trusted_proxy_count: usize,
) -> Option<String>Expand description
从 X-Forwarded-For 头按信任代理层数提取真实客户端 IP。
§伪造风险(务必正确配置 TRUSTED_PROXY_COUNT)
XFF 头由客户端可写,本函数以 parts[len-1-trusted_proxy_count] 选取
「可信代理链最左侧之外」的地址。该取值完全依赖 TRUSTED_PROXY_COUNT 与真实
代理跳数精确相等,一旦不符即可被滥用:
- 配得偏大:会选中客户端伪造的地址——攻击者在请求里塞入多个伪 XFF 段, 使选中的「客户端 IP」落为其伪造值,从而绕过按 IP 的限流(每次伪造一个新 IP), 或令多个真实用户被错误归并到同一代理 IP 的桶里。
- 配得偏小:会选中某一跳中间代理的 IP,导致所有用户共享同一个限流桶。
因此生产部署必须由最外层反向代理覆盖/重写 XFF(而非原样转发客户端 XFF),
并令 TRUSTED_PROXY_COUNT 等于「客户端 → 服务端」之间的真实代理跳数。
详见 AGENTS.md 中 TRUSTED_PROXY_COUNT 的部署说明。