Вопросы безопасности `pip -allow-external`

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

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

Ответы

Ответ 1

Я задал этот вопрос на канале FreeNode #pip. Ниже приводится моя интерпретация ответов, которые у меня есть. Благодарим меня за agronholm и dstufft от #pip за ответ на мой вопрос.

Пакеты могут поддерживаться PyPI тремя способами:

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

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

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

Следовательно, только --allow-external считается безопасным коммутатором, и только использование --allow-unverified является потенциальной проблемой безопасности. Вот почему pip имеет параметр --allow-all-external, но не --allow-all-unverified.

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