Requests: HTTPoxy миграция

Созданный на 18 июл. 2016  ·  4Комментарии  ·  Источник: psf/requests

https://httpoxy.org/

Можно установить HTTP_PROXY в сценариях CGI, передав заголовок Proxy . Если сценарий использует запросы на загрузку файлов, запросы будут успешно использовать предоставленный злоумышленником прокси-сервер для выполнения запросов.

Это должно быть смягчено, как в Perl (с 2001 года), Ruby и библиотеках, таких как curl.

Я подтвердил, что HTTP_PROXY (в верхнем регистре) принимается так же, как и обычный строчный http_proxy (запросы 2.7.0)

Самый полезный комментарий

Мы долго обсуждали это в IRC. У нас здесь сложный набор мнений, но вот они:

  1. В общем, если вы запускаете свой сценарий запросов в месте, где ваше приложение разрешает запись в среду, вам следует отключить поиск запросов в среде. Для этого у нас есть флаг: Session.trust_env . Установка его на False полностью и полностью снижает этот риск.
  2. CGI — это _чрезвычайно_ необычный режим для запуска кода Python. Он поразительно неэффективен, и, насколько я знаю, практически ни одно приложение Python не разработано с его использованием.
  3. Наш поиск прокси на самом деле выполняется стандартной библиотекой Python. Это означает, что более эффективное исправление находится в самой стандартной библиотеке Python, что может смягчить проблему не только для запросов, но и для всех других клиентов в стандартной библиотеке Python.

Я готов рассмотреть возможность выдачи предупреждений при выполнении запросов внутри процесса CGI с помощью trust_env=True и даже готов рассмотреть возможность принуждения trust_env к False в такой ситуации, но реально для кода Python правильным решением будет просто _не запускать ваши приложения внутри CGI_.

Все 4 Комментарий

Мы долго обсуждали это в IRC. У нас здесь сложный набор мнений, но вот они:

  1. В общем, если вы запускаете свой сценарий запросов в месте, где ваше приложение разрешает запись в среду, вам следует отключить поиск запросов в среде. Для этого у нас есть флаг: Session.trust_env . Установка его на False полностью и полностью снижает этот риск.
  2. CGI — это _чрезвычайно_ необычный режим для запуска кода Python. Он поразительно неэффективен, и, насколько я знаю, практически ни одно приложение Python не разработано с его использованием.
  3. Наш поиск прокси на самом деле выполняется стандартной библиотекой Python. Это означает, что более эффективное исправление находится в самой стандартной библиотеке Python, что может смягчить проблему не только для запросов, но и для всех других клиентов в стандартной библиотеке Python.

Я готов рассмотреть возможность выдачи предупреждений при выполнении запросов внутри процесса CGI с помощью trust_env=True и даже готов рассмотреть возможность принуждения trust_env к False в такой ситуации, но реально для кода Python правильным решением будет просто _не запускать ваши приложения внутри CGI_.

Имеет смысл для меня. Избегание HTTP_PROXY (верхний регистр) в контексте CGI, вероятно, было бы хорошим шагом, но если запросы не делают этого напрямую, вероятно, нет смысла принимать активные меры. Я сам всегда использую только wsgi. Я пойду дальше и закрою это.

@remram44 remram44 Что бы это ни стоило, я бы _сердечно_ поддержал исправление для метода urllib.request модуля stdlib getproxies для реализации такого рода проверки. Это кажется гораздо более продуктивным местом для установки патча. =) Если вы хотите открыть отчет об ошибке для этого, я с радостью присоединюсь: я даже могу добровольно написать патч сам!

Я подал cpython-27568 .

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

ReimarBauer picture ReimarBauer  ·  4Комментарии

justlurking picture justlurking  ·  3Комментарии

everping picture everping  ·  4Комментарии

eromoe picture eromoe  ·  3Комментарии

xsren picture xsren  ·  3Комментарии