`pip --allow-external` 的安全注意事项
Posted
技术标签:
【中文标题】`pip --allow-external` 的安全注意事项【英文标题】:Security considerations of `pip --allow-external` 【发布时间】:2014-01-28 01:39:30 【问题描述】:使用pip
的--allow-external
或--allow-all-externals
选项有哪些安全注意事项?
描述这些选项的文档部分(pip install、pip wheel)非常简洁,并没有解释使用它们的危险。我在 Internet 上也找不到任何可以这样做的资源。
【问题讨论】:
【参考方案1】:我在 FreeNode #pip
频道上问过这个问题。以下是我对收到的回复的解释。感谢来自#pip
的agronholm
和dstufft
回答我的问题。
可以通过三种不同的方式在 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
不是作为安全功能引入的,而是因为在处理第三方网站时可能存在速度、正常运行时间和便利性问题。
【讨论】:
以上是关于`pip --allow-external` 的安全注意事项的主要内容,如果未能解决你的问题,请参考以下文章