'pip --allow-external`的安全考虑因素

lio*_*ori 16 python security pip

使用--allow-external--allow-all-externals选项的安全考虑是pip什么?

描述这些选项的文档部分(pip install,pip wheel)非常简洁,并不解释使用它们的危险.我也无法在互联网上找到任何可以这样做的资源.

lio*_*ori 25

我在FreeNode #pip频道上问了这个问题.以下是我对那里的回复的解释.要感谢agronholm,并dstufft#pip回答我的问题.

可以通过三种不同的方式在PyPI上维护包:

  1. 直接在PyPI上.如果包托管在PyPI上,则无需额外的开关来安装它.通过HTTPS保护与PyPI的连接,因此下载被视为可信任.

  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不是作为安全功能引入的,而是由于在处理第三方网站时潜在的速度,正常运行时间和便利性问题.