Consideraciones de seguridad de `pip –allow-external`

¿Cuáles son las consideraciones de seguridad al utilizar --allow-all-externals opciones de pip de --allow-external o --allow-all-externals ?

Las secciones de documentación donde se describen estas opciones ( pip install , pip wheel ) son muy concisas y no explican los peligros de usarlas. Tampoco pude encontrar ningún recurso en Internet que lo hiciera tampoco.

He hecho esta pregunta en el canal FreeNode #pip . La siguiente es mi interpretación de las respuestas que tengo allí. Gracias a agronholm y dstufft de #pip por responder mi pregunta.

Los paquetes se pueden mantener en PyPI de tres maneras diferentes:

  1. Directamente en PyPI. Si un paquete está alojado en PyPI, no se requiere un interruptor adicional para instalarlo. La conexión a PyPI está protegida por HTTPS, por lo que las descargas se consideran de confianza.

  2. En un sitio externo, con PyPI almacenando una sum de comprobación segura de los archivos relevantes. En este caso, pip requiere que el --allow-external continúe. Si bien la descarga podría provenir de un servidor no seguro, los archivos descargados se comparan con la sum de comprobación segura almacenada en PyPI. Por eso, este caso también se considera seguro.

  3. En un sitio externo, sin PyPI almacenando ninguna sum de comprobación. En este caso, no hay forma de garantizar que la descarga sea segura. --allow-external no es suficiente para habilitar la instalación en este caso, pip requiere --allow-unverified .

Por lo tanto, --allow-external solo se considera un interruptor seguro, y solo usar --allow-unverified es un problema de seguridad potencial. Esta es también la razón por la que pip tiene una --allow-all-external , pero no --allow-all-unverified .

Como nota al --allow-external , --allow-external se introdujo no como una función de seguridad, sino debido a la velocidad potencial, el tiempo de actividad y los problemas de conveniencia al tratar con sitios web de terceros.