3

AWS で Symfony2 Web アプリケーションを実行しており、Elastic Load Balancer を使用しています。

コントローラー メソッドでは、Web ページを要求しているユーザーの IP を取得するために次のことを行う必要があります。

$request->trustProxyData();
$clientIp = $request->getClientIp(True);

これはセキュリティ上のリスクをもたらしますか? 権限昇格のためにクライアント IP を使用しているのではなく、ログに記録しているだけです。

trustProxyData()常に強制する方法、またはDWIM$request->getClientIp()に再構成する方法はありますか? アプリは常にロード バランサーの背後にあります (デスクトップで開発を行っている場合を除く)。

関連: http://fabien.potencier.org/article/51/create-your-own-framework-on-top-of-the-symfony2-components-part-2 (ただし、グローバルなconfig を変更したので、どこでも呼び出す必要はありません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

一般的なセキュリティ リスクについてはわかりませんが、各コントローラー アクションでこのメソッドを呼び出さないようにするためのヒントを提供できます。

app.php直前に$kernel->handle(...);設定する必要があります:

Request::trustProxyData();

乾杯 ;)

于 2012-08-14T19:01:11.390 に答える
1

使った

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

web/app.php問題を解決します。

ここで私の答えを参照してください: https://stackoverflow.com/a/28793609/2030937

于 2015-03-01T12:55:06.077 に答える