亚马逊ELB背后的symfony2:始终信任代理数据?

亚马逊ELB背后的symfony2:始终信任代理数据?,symfony,proxy,amazon-web-services,load-balancing,Symfony,Proxy,Amazon Web Services,Load Balancing,我在AWS上运行一个Symfony2 web应用程序,并且使用一个弹性负载平衡器 在控制器方法中,我需要执行以下操作以获取请求网页的用户的IP: $request->trustProxyData(); $clientIp=$request->getClientIp(True); 这是否存在任何安全风险?我没有使用客户端IP来升级权限,我只是记录它 是否有某种方法可以强制trustProxyData()始终,或以其他方式重新配置$request->getClientIp()?我的应用程序将始终位

我在AWS上运行一个Symfony2 web应用程序,并且使用一个弹性负载平衡器

在控制器方法中,我需要执行以下操作以获取请求网页的用户的IP:

$request->trustProxyData();
$clientIp=$request->getClientIp(True);
这是否存在任何安全风险?我没有使用客户端IP来升级权限,我只是记录它

是否有某种方法可以强制
trustProxyData()
始终,或以其他方式重新配置
$request->getClientIp()
?我的应用程序将始终位于负载平衡器后面(除非我在桌面上进行开发)


相关:(但它并没有说是否有一些全局配置,这样我就不必到处调用
trustProxyData()

我不确定是否存在任何一般安全风险,但我可以告诉您如何避免在每个控制器操作中调用此方法

app.php
$kernel->handle(…)前面您应该设置:

Request::trustProxyData();


干杯;)

您可以将框架捆绑包配置为:

注:

trust_proxy_headers选项已弃用,将在Symfony 2.3中删除

有关如何正确信任代理数据的详细信息,请参阅和。

Request::setTrustedProxies(array($request->server->get('REMOTE_ADDR')));
web/app.php
中解决此问题


请参见我的答案:

在现代symfony版本中:

如果您的elb位于cloudfront代理之后,您也应该看看这个包:

这安全吗?似乎一揽子信托是有风险的。有没有办法用Amazon AWS负载平衡器使用的“HTTP_X_转发_PROTO”覆盖默认的“X_转发_PROTO”。Acyra:配置要信任的代理已按需要更改(Symfony 2.3):
受信任的_代理:[192.0.0.1,10.0.0.0/8]
-更新以使用代理的IP CIDR范围。(参见当前版本)当与ELB一起使用时,这最适用于Symfony 2.2应用程序,ELB具有动态IP,并且Symfony 2.2不支持CIDR。从Symfony 3.4开始,它仍然有效。我的服务器位于CloudFlare CDN后面,带有强制https重定向。拥有一条带有
schemes:[https]
的路由让我得到了“TooManyRedirects”。然而,在
web/app.php
中添加这一行确实解决了这个问题。
Request::setTrustedProxies(array($request->server->get('REMOTE_ADDR')));