Proxy
ヘッダーを渡すことにより、CGIスクリプトでHTTP_PROXY
を設定できます。 スクリプトがリクエストを使用してファイルをダウンロードする場合、リクエストは攻撃者が提供したプロキシを使用してリクエストを作成します。
これは、Perl(2001年以降)、Ruby、およびcurlなどのライブラリの場合と同様に軽減する必要があります。
HTTP_PROXY
(大文字)が従来の小文字のhttp_proxy
(リクエスト2.7.0)と同様に受け入れられることを確認しました
これについては、IRCで詳細に議論してきました。 ここには複雑な意見がありますが、次のとおりです。
Session.trust_env
。 False
に設定すると、このリスクが完全に軽減されます。trust_env=True
を使用してCGIプロセス内でリクエストを実行するときに警告が発生する可能性を検討したいと思います。また、 trust_env
をFalse
に強制する可能性も検討します。このような状況では、しかし現実的にはPythonコードの場合、これに対する正しい解決策は、単に_CGI内でアプリケーションを実行しない_ことです。
私には理にかなっています。 CGIコンテキストでHTTP_PROXY(大文字)を回避することはおそらく良い動きですが、要求が直接それを行わない場合は、積極的な対策を講じる意味がない可能性があります。 私自身はwsgiのみを使用しています。 先に進んでこれを閉じます。
@ remram44価値があるので、この種のチェックを実装するために、stdlibのurllib.request
モジュールのgetproxies
メソッドへのパッチを_心から_サポートします。 それはパッチを置くためのはるかに生産的な場所のようです。 =)そのためのバグレポートを開きたい場合は、喜んでチャイムを鳴らします。自分でパッチを作成することもできます。
私はcpython-27568を提出しました。
最も参考になるコメント
これについては、IRCで詳細に議論してきました。 ここには複雑な意見がありますが、次のとおりです。
Session.trust_env
。False
に設定すると、このリスクが完全に軽減されます。trust_env=True
を使用してCGIプロセス内でリクエストを実行するときに警告が発生する可能性を検討したいと思います。また、trust_env
をFalse
に強制する可能性も検討します。このような状況では、しかし現実的にはPythonコードの場合、これに対する正しい解決策は、単に_CGI内でアプリケーションを実行しない_ことです。