`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 频道上问过这个问题。以下是我对收到的回复的解释。感谢来自#pipagronholmdstufft 回答我的问题。

可以通过三种不同的方式在 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` 的安全注意事项的主要内容,如果未能解决你的问题,请参考以下文章

python第三方库PIL安装的各种坑

python 使用mysql示例

python3.6连接mysql

python怎么调用数据库

mfp中范围元素中的安​​全检查有啥关系?

Apache+PHP+Mysql+jdk+tomcat的安裝