Requests: HTTPoxy migitation

作成日 2016年07月18日  ·  4コメント  ·  ソース: psf/requests

https://httpoxy.org/

Proxyヘッダーを渡すことにより、CGIスクリプトでHTTP_PROXYを設定できます。 スクリプトがリクエストを使用してファイルをダウンロードする場合、リクエストは攻撃者が提供したプロキシを使用してリクエストを作成します。

これは、Perl(2001年以降)、Ruby、およびcurlなどのライブラリの場合と同様に軽減する必要があります。

HTTP_PROXY (大文字)が従来の小文字のhttp_proxy (リクエスト2.7.0)と同様に受け入れられることを確認しました

最も参考になるコメント

これについては、IRCで詳細に議論してきました。 ここには複雑な意見がありますが、次のとおりです。

  1. 一般に、アプリケーションが環境への書き込みを許可している場所でRequestsスクリプトを実行している場合は、Requestsによる環境の検索を無効にする必要があります。 これにはフラグがあります: Session.trust_envFalseに設定すると、このリスクが完全に軽減されます。
  2. CGIは、Pythonコードを実行するための_非常に_珍しいモードです。 それは驚くほど非効率的であり、私が知る限り、それを使用して開発されたPythonアプリケーションは本質的にゼロです。
  3. プロキシの検索は、実際にはPython標準ライブラリによって行われます。 これは、より効率的な修正がPython標準ライブラリ自体にあることを意味します。これにより、リクエストだけでなく、Python標準ライブラリ内の他のすべてのクライアントの問題を軽減できます。

trust_env=Trueを使用してCGIプロセス内でリクエストを実行するときに警告が発生する可能性を検討したいと思います。また、 trust_envFalseに強制する可能性も検討します。このような状況では、しかし現実的にはPythonコードの場合、これに対する正しい解決策は、単に_CGI内でアプリケーションを実行しない_ことです。

全てのコメント4件

これについては、IRCで詳細に議論してきました。 ここには複雑な意見がありますが、次のとおりです。

  1. 一般に、アプリケーションが環境への書き込みを許可している場所でRequestsスクリプトを実行している場合は、Requestsによる環境の検索を無効にする必要があります。 これにはフラグがあります: Session.trust_envFalseに設定すると、このリスクが完全に軽減されます。
  2. CGIは、Pythonコードを実行するための_非常に_珍しいモードです。 それは驚くほど非効率的であり、私が知る限り、それを使用して開発されたPythonアプリケーションは本質的にゼロです。
  3. プロキシの検索は、実際にはPython標準ライブラリによって行われます。 これは、より効率的な修正がPython標準ライブラリ自体にあることを意味します。これにより、リクエストだけでなく、Python標準ライブラリ内の他のすべてのクライアントの問題を軽減できます。

trust_env=Trueを使用してCGIプロセス内でリクエストを実行するときに警告が発生する可能性を検討したいと思います。また、 trust_envFalseに強制する可能性も検討します。このような状況では、しかし現実的にはPythonコードの場合、これに対する正しい解決策は、単に_CGI内でアプリケーションを実行しない_ことです。

私には理にかなっています。 CGIコンテキストでHTTP_PROXY(大文字)を回避することはおそらく良い動きですが、要求が直接それを行わない場合は、積極的な対策を講じる意味がない可能性があります。 私自身はwsgiのみを使用しています。 先に進んでこれを閉じます。

@ remram44価値があるので、この種のチェックを実装するために、stdlibのurllib.requestモジュールのgetproxiesメソッドへのパッチを_心から_サポートします。 それはパッチを置くためのはるかに生産的な場所のようです。 =)そのためのバグレポートを開きたい場合は、喜んでチャイムを鳴らします。自分でパッチを作成することもできます。

私はcpython-27568を提出しました。

このページは役に立ちましたか?
0 / 5 - 0 評価