【发布时间】:2018-03-19 01:56:02
【问题描述】:
给定一个网络基础设施,具有:
WEB --> HTTP 代理 --> NGINX --> PHP
我们使用 Php 中的 "X-forwarded-{for,host} 来获取真实的 IP 和主机。但有时,我们得到了错误的值,我发现可以像这样设置这些字段:
curl -sL http://www.toto.com -H "X-Forwarded-For: 1.96.0.1"
作为开发人员,我无权访问 haproxy/nginx 配置和我们的基础设施。伙计们说这是开发人员的错。
因此我的问题是,前端 HTTP 代理应在将查询代理到应用服务器之前删除用户“X-forwarded”字段?
【问题讨论】:
-
这是有问题的,因为如果连接本身来自另一个代理,并且您删除了这些标头,那么您就会丢失客户端地址并获得代理地址。因此,您也不能信任标头,因为它很容易被欺骗,所以您的电话
-
我建议仅删除来自网络的标头,而不是来自内部流量。我们有特定的网络流量入口点(用于管理 SSL)。
标签: http nginx haproxy x-forwarded-for