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

时间:2014-01-09 13:14:01

标签: python security pip

使用--allow-external的{​​{1}}或--allow-all-externals选项有哪些安全注意事项?

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

1 个答案:

答案 0 :(得分:25)

我在FreeNode #pip频道上提出了这个问题。以下是我对那里的回复的解释。感谢来自agronholm的{​​{1}}和dstufft来回答我的问题。

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

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

  2. 在外部站点上,PyPI存储相关文件的安全校验和。在这种情况下,#pip需要pip开关才能继续。虽然下载可能来自不安全的服务器,但下载的文件将根据存储在PyPI上的安全校验和进行检查。因此,这种情况也被认为是安全的。

  3. 在外部网站上,没有PyPI存储任何校验和。在这种情况下,无法确保下载安全。在这种情况下,--allow-external不足以启用安装,--allow-external需要pip

  4. 因此,仅--allow-unverified被视为安全切换,仅使用--allow-external是一个潜在的安全问题。这也是--allow-unverified选项pip,但没有--allow-all-external的原因。

    作为附注,--allow-all-unverified不是作为安全功能引入的,而是由于在处理第三方网站时潜在的速度,正常运行时间和便利性问题。