Python: PyPi公共模块:如何确定是否安全可靠?

12

我已完成Python 3应用程序,并使用PyPi的多个公共模块。

然而,在将其部署到我们公司的企业环境中处理客户凭据和访问第三方API之前,我需要做尽职调查以确保它们是安全的。

我需要执行哪些步骤:

  1. 验证PyPi模块的安全性和可用性,并注意目标Python 3应用程序将处理凭据的重要性。
  2. 最推荐的验证PyPi模块签名的方法是什么?
  3. 能够信任PyPi模块的签名吗?

顺便说一下,Python 3应用程序将在Docker容器中运行。

谢谢

1个回答

4
这是3个不同的问题,所以:
  1. 你需要审计软件包(或让其他人来做),才能知道它是否安全。没有简单的方法。
  2. 所有pypi软件包都有附带md5签名(文件后面有括号中的链接)。其中一些还会附加pgp签名,出现在相同的位置,但是否发布取决于作者。(例如https://pypi.python.org/pypi/rpc4django 包含md5和pgp)。Md5验证完整性。Pgp验证完整性和来源,因此如果可用,它是更好的选择。
  3. 与任何其他签名一样重要。

如果您对依赖关系担忧到那个程度,我认为您应该考虑维护内部pypi存储库。它可以提供更好的验证(仅在初始下载后自己签署软件包并仅接受您的签名)。它提供了更好的可靠性和速度(如果pypi崩溃,您仍然可以构建软件)。而且它避免了替换/更新尚未审核/批准的软件包的问题。


谢谢回复。所以,“你必须审核该软件包(或让其他人来做)才能知道它是否安全。没有简单的方法。”很抱歉接下来的问题:如何进行审核?是否有工具、流程或服务可以对PyPi模块进行审核? - jeff00seattle
有一些代码分析工具可以帮助你,但我认为在审计方面,没有什么捷径可以替代让某个人阅读和理解代码——这是唯一的方法,以确定它是否按照所述行为运作。 - joelnb
就“代码分析工具”而言,我更假设指的是pep8、pyflakes、pylint等。 - jeff00seattle
@JeffTanner 有一个名为 bandit 的工具,它在野外发现了相当多的 CVE。 (无耻地自荐,我正在开发它)但它并不能替代实际检查源代码并积极尝试找出其中问题的人。如何做到这一点? 找一家进行代码审计的安全公司-他们会为您完成此任务。当然,您必须考虑成本是否值得。 - viraptor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接