使用--allow-external
的{{1}}或--allow-all-externals
选项有哪些安全注意事项?
描述这些选项的文档部分(pip install,pip wheel)非常简洁,不解释使用它们的危险。我也无法在互联网上找到任何资源。
答案 0 :(得分:25)
我在FreeNode #pip
频道上提出了这个问题。以下是我对那里的回复的解释。感谢来自agronholm
的{{1}}和dstufft
来回答我的问题。
可以通过三种不同的方式在PyPI上维护包:
直接在PyPI上。如果包托管在PyPI上,则无需额外的开关来安装它。通过HTTPS保护与PyPI的连接,因此下载被视为可信任。
在外部站点上,PyPI存储相关文件的安全校验和。在这种情况下,#pip
需要pip
开关才能继续。虽然下载可能来自不安全的服务器,但下载的文件将根据存储在PyPI上的安全校验和进行检查。因此,这种情况也被认为是安全的。
在外部网站上,没有PyPI存储任何校验和。在这种情况下,无法确保下载安全。在这种情况下,--allow-external
不足以启用安装,--allow-external
需要pip
。
因此,仅--allow-unverified
被视为安全切换,仅使用--allow-external
是一个潜在的安全问题。这也是--allow-unverified
选项pip
,但没有--allow-all-external
的原因。
作为附注,--allow-all-unverified
不是作为安全功能引入的,而是由于在处理第三方网站时潜在的速度,正常运行时间和便利性问题。