信任代理
编辑本页警告:您正在浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 2.4,现已不再维护。
读本页的更新版本用于Sy欧宝娱乐app下载地址mfony 6.2(当前稳定版本)。
信任代理
提示
如果您正在使用Symfony框架,请从阅欧宝娱乐app下载地址读开始如何配置Symfony在负载均衡器欧宝娱乐app下载地址或反向代理后工作.
如果你发现自己处于某种代理(比如负载均衡器)的后面,那么某些头信息可能会通过特殊的方式发送给你X-Forwarded - *
头。例如,宿主
HTTP报头通常用于返回所请求的主机。但是当您位于代理之后时,真正的主机可能存储在X-Forwarded-Host
头。
由于HTTP报头可以被欺骗,Symfony可以欧宝娱乐app下载地址不默认情况下信任这些代理标头。如果您在代理之后,您应该手动将您的代理加入白名单。
2.3
在Symfony 2.3中引入了CIDR表示法支持,因此您可以将整个子网列入白名欧宝娱乐app下载地址单(例如。10.0.0.0/8
,fc00:: / 7
).
1 2 3 4
使用欧宝娱乐app下载地址\组件\HttpFoundation\请求;//只信任来自此IP地址的代理报头请求::setTrustedProxies (数组(“192.0.0.1”,“10.0.0.0/8”));
配置报头名称
默认情况下,以下代理头是可信的:
X-Forwarded-For
中使用的getClientIp ();X-Forwarded-Host
中使用的getHost ();X-Forwarded-Port
中使用的getPort ();X-Forwarded-Proto
中使用的getScheme ()而且isSecure ();
如果反向代理对其中任何一个使用不同的头名称,您可以通过配置该头名称setTrustedHeaderName ():
1 2 3 4
请求::setTrustedHeaderName(请求::HEADER_CLIENT_IP,“X-Proxy-For”);请求::setTrustedHeaderName(请求::HEADER_CLIENT_HOST,“X-Proxy-Host”);请求::setTrustedHeaderName(请求::HEADER_CLIENT_PORT,“X-Proxy-Port”);请求::setTrustedHeaderName(请求::HEADER_CLIENT_PROTO,“X-Proxy-Proto”);
不相信某些头文件
默认情况下,如果您将代理的IP地址列入白名单,则上面列出的所有四个头都是可信的。如果你需要信任这些头文件中的一些,而不是其他的,你也可以这样做:
1 2
//禁用信任' ' X-Forwarded-Proto ' '头,使用默认头请求::setTrustedHeaderName(请求::HEADER_CLIENT_PROTO,”);
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。