我正在AWS上运行Symfony2 Web应用程序,并且正在使用Elastic Load Balancer。
在控制器方法中,我需要执行以下操作来获取请求网页的用户的IP:
$request->trustProxyData();
$clientIp = $request->getClientIp(True);
这是否存在任何安全风险?我没有使用客户端IP进行特权升级,我只是在记录它。
是否有某种方法可以始终强制trustProxyData()
,或者以其他方式将$request->getClientIp()
重新配置为DWIM?我的应用程序将始终位于负载平衡器之后(除非我在桌面上进行开发)。
相关:http://fabien.potencier.org/article/51/create-your-own-framework-on-top-of-the-symfony2-components-part-2(但是它没有说明是否有一些全局配置,因此我不必到处都调用trustProxyData()
)。
您可以配置框架捆绑包来执行此操作:http://symfony.com/doc/2.0/reference/configuration/framework.html#trust-proxy-headers
framework:
trust_proxy_headers: true
我不确定是否有任何常规的安全风险,但是我可以给您一个提示,如何避免在每个控制器操作中调用此方法。
在app.php
之前的$kernel->handle(...);
中,您应该设置:
Request::trustProxyData();
欢呼;)
注意:
trust_proxy_headers选项已过时,将在Symfony 2.3中删除。
有关如何正确信任代理数据的详细信息,请参见a trusted_proxies 和a Trusting Proxies。>
我用过