3

我在 AWS 上运行 Symfony2 Web 应用程序,并且正在使用弹性负载均衡器。

在控制器方法中,我需要执行以下操作来获取请求网页的用户的 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()到处打电话)。

4

5 回答 5

4

您可以配置框架包来执行此操作:http ://symfony.com/doc/2.0/reference/configuration/framework.html#trust-proxy-headers

framework:
    trust_proxy_headers: true
于 2012-08-14T19:59:44.977 回答
1

笔记:

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

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

于 2014-02-26T10:12:38.657 回答
1

我用了

Request::setTrustedProxies(array($request->server->get('REMOTE_ADDR')));

web/app.php解决问题。

在这里查看我的答案:https ://stackoverflow.com/a/28793609/2030937

于 2015-03-01T12:55:06.077 回答
1

我不确定任何一般的安全风险,但我可以给你一个提示,如何避免在每个控制器操作中调用此方法。

在你app.php之前$kernel->handle(...);你应该设置:

Request::trustProxyData();

干杯;)

于 2012-08-14T19:01:11.390 回答
1

在现代 symfony 版本中:https ://symfony.com/doc/current/deployment/proxies.html#but-what-if-the-ip-of-my-reverse-proxy-changes-constantly

如果您的 elb 在云端代理后面,您也应该看看这个包: https ://packagist.org/packages/fmaj/cloudfront-trusted-proxies

于 2020-03-30T12:01:34.117 回答