【发布时间】:2019-06-17 07:48:04
【问题描述】:
我注意到Flask tutorial 涉及使用 pip。看起来它只用于在本地创建一个轮子,这将使在服务器上的设置更容易,但作为一个网络开发新手,我很好奇:有没有人真的一路上传他们的网站到像 PyPI 这样的公共存储库?这样做有什么影响(安全相关或其他方面)?
【问题讨论】:
标签: python flask pypi python-wheel
我注意到Flask tutorial 涉及使用 pip。看起来它只用于在本地创建一个轮子,这将使在服务器上的设置更容易,但作为一个网络开发新手,我很好奇:有没有人真的一路上传他们的网站到像 PyPI 这样的公共存储库?这样做有什么影响(安全相关或其他方面)?
【问题讨论】:
标签: python flask pypi python-wheel
不,您应该不将私有 Web 项目上传到 PyPI(Python 包索引)! PyPI 适用于旨在共享的公共、已发布项目。
为您的 Web 项目创建包在部署到生产服务器时具有优势,但这并不要求您的包在 PyPI 上可用。 pip 命令行工具可以从其他存储库(包括私有 Git 或 Mercurial 或 SVN 存储库或私有包索引)以及文件系统中查找和安装包。
郑重声明:我没有为我(帮助)开发的任何最近部署的 Flask 项目创建包而烦恼。这些直接从他们的 Github 存储库在云托管硬件和/或 Docker 容器中投入生产。 依赖项使用pip 安装(在所有情况下由Pipenv tool 驱动),但项目代码本身只是直接从结帐中加载。
也就是说,如果这些项目开始使用持续集成,那么在生产中也可以使用生成的测试代码(打包为轮子)。将这些轮子发布到私有索引或服务器;已经有几个项目甚至一些 SaaS 服务可供您管理私有包索引。
如果您确实发布到 PyPI,那么任何人都可以下载您的包并分析您的网站是如何工作的。通过这种方式,黑帽黑客可以轻松找到并利用您项目中的安全问题。
【讨论】: