Каковы соображения безопасности при использовании параметров --allow-external или --allow-all-externals для pip?

Разделы документации, в которых описаны эти параметры (pip install, pip wheel < / a>) очень кратки и не объясняют опасности их использования. Я также не смог найти в Интернете ни одного ресурса, который мог бы сделать это.

16
liori 9 Янв 2014 в 17:14

1 ответ

Лучший ответ

Я задал этот вопрос на канале FreeNode #pip. Ниже приводится моя интерпретация полученных у меня ответов. Спасибо agronholm и dstufft от #pip за ответ на мой вопрос.

Пакеты можно поддерживать в PyPI тремя различными способами:

  1. Прямо на PyPI. Если пакет размещен на PyPI, никаких дополнительных переключателей для его установки не требуется. Подключение к PyPI защищено HTTPS, поэтому загрузки считаются надежными.

  2. На внешнем сайте, где PyPI хранит безопасную контрольную сумму соответствующих файлов. В этом случае pip для продолжения требуется переключатель --allow-external. Хотя загрузка потенциально может происходить с незащищенного сервера, загруженные файлы проверяются по безопасной контрольной сумме, хранящейся в PyPI. Из-за этого этот случай также считается безопасным.

  3. На внешнем сайте, без сохранения контрольной суммы PyPI. В этом случае невозможно гарантировать безопасность загрузки. --allow-external недостаточно для включения установки в этом случае, pip требует --allow-unverified.

Таким образом, только --allow-external считается безопасным переключателем, и только использование --allow-unverified является потенциальной проблемой безопасности. По этой же причине в pip есть опция --allow-all-external, но нет --allow-all-unverified.

Кстати, --allow-external был введен не как функция безопасности, а из-за потенциальных проблем со скоростью, временем безотказной работы и удобством при работе со сторонними веб-сайтами.

25
liori 12 Янв 2014 в 04:07