在生产环境中使用Composer Install的安全问题

时间:2014-10-07 22:12:41

标签: php composer-php

我正在尝试为企业级应用程序设计部署过程。关于Composer是否可以在生产环境中使用,我听到了相互矛盾的意见。

我知道运行composer update会出错,因为您可以使用未经测试的版本。而是在生产中,建议仅使用composer install

所以说,我最担心的是安全问题。中间人的攻击有多容易。如果packagist遭到攻击,我们可以删除被黑客入侵的代码吗?

我不希望在每次部署时都有手动流程,我必须手动将供应商文件移除。目前,Jenkins将把源文件移到生产环境中。如果可能的话,我不想版本控制供应商文件夹。

  1. 如果我使用composer install,我是否真的要担心安全问题。
  2. 如果我不在制作中使用作曲家,您如何建议我部署供应商档案?

2 个答案:

答案 0 :(得分:6)

是的,您应该关注并尝试了解涉及哪些数据传输。

Composer的当前实现确实在内部使用了很多校验和,但没有涉及包签名,因此在composer install期间下载的任何内容都可能是任何软件,具体取决于托管软件存储库的服务器或TGZ / ZIP或被询问的元数据是一个有效的目标,可能会被篡改以影响您的安装。

但请注意,这并不仅仅与安全性有关。如果您依赖于在生产部署期间可安装的软件包,则更有可能是所提到的任何服务器都处于脱机状态。您如何保护您的部署免受第三方软件托管的任何服务器中断?这个问题的答案非常简单:在本地托管软件。

这个答案也会影响安​​全问题:如果您在本地托管软件包,您还可以在内部提供这些版本之前对其进行审核。根据您需要的安全级别,您可以检查所获得的每个版本,并将可用版本限制为只能检查的少数版本,或者您可以创建一种更为宽松的方式来断言软件你从原来的Git存储库获取,并在本地创建软件的ZIP版本(如果你不打算进一步开发包IMO,ZIP更方便)。

只有两种软件产品可以提供帮助:Toran Proxy是Jordi Boggiano(Composer核心开发人员之一)的商业产品,应该也有助于为Composer和基础设施的开发提供资金。另一个软件是Satis,它还允许创建您使用的软件包的本地副本。

免责声明:我的回答可能没有得到更细致的细节,并且可能会提供一些过于简短或可能错误的细节。它并不是要解决每个安全细节,而是要给出一个广泛的概述。软件包的安全性和真实性检查是相当长一段时间讨论的一个主题(例如,参见https://github.com/composer/composer/issues/38),但到目前为止没有任何结果。

答案 1 :(得分:0)

要阻止目录列表(例如出于安全目的),应从配置文件中的每个Options指令中删除Indexes关键字。

在您的apache服务器上,您可以使用:

将此添加到您的.htaccess文件

<Directory />
  Options -Indexes
</Directory>