The perils of the real client IP (2022)
10 months ago
- #http-headers
- #security
- #networking
- 出于安全考虑,应使用X-Forwarded-For(XFF)标头中最右侧的IP地址,以避免欺骗行为。
- 避免使用XFF标头中最左侧的IP地址,因为它极易被伪造,安全性不可靠。
- 选择最右侧IP时,务必确保使用的是XFF标头的最后一个实例。
- 特殊标头如X-Real-IP或True-Client-IP可能有用,但依赖于正确的反向代理配置。
- 切勿信任非自身反向代理设置的标头,以防止欺骗漏洞。
- 许多速率限制器实现容易受到欺骗攻击,导致绕过限制和内存耗尽攻击。
- 始终验证代码和基础设施中'真实客户端IP'的获取方式。
- 除非由自身基础设施控制,否则X-Forwarded-For等标头不可信。
- 多个XFF标头会使IP提取复杂化,需谨慎合并处理。
- XFF标头中的私有IP应被忽略,因其无法用于识别客户端。
- RFC 7239的Forwarded标头是比XFF更官方但采用较少的替代方案,存在类似安全问题。
- 若未更新IP派生逻辑,网络架构变更可能引入漏洞。
- 在首个代理处覆盖XFF标头可简化信任模型,但可能助长不良实践。
- 考虑使用由首个代理设置的自定义单IP标头,以实现更可靠的客户端IP识别。