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

Php 在生产环境中使用Composer安装的安全问题,php,composer-php,Php,Composer Php,我正在尝试为企业级应用程序设计部署过程。对于作曲家是否可以在生产环境中使用,我听到了相互矛盾的意见 我知道运行composer update将是一个错误,因为您可以引入未经测试的版本。建议在生产中只使用composer安装 话虽如此,我最担心的是安全问题。中间人攻击的可能性有多大。如果packagist被黑客攻击,我们是否可以删除被黑客攻击的代码 我不希望有一个手动流程,每次部署时都必须手动提交供应商文件。目前,Jenkins将把源文件转移到生产环境中。如果可能的话,我不想对供应商文件夹进行版本

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

我知道运行
composer update
将是一个错误,因为您可以引入未经测试的版本。建议在生产中只使用
composer安装

话虽如此,我最担心的是安全问题。中间人攻击的可能性有多大。如果packagist被黑客攻击,我们是否可以删除被黑客攻击的代码

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

  • 如果我使用
    composer安装
    ,我真的应该担心安全性吗
  • 如果我在生产中不使用composer,您建议我如何部署供应商文件

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

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

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

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

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


    免责声明:我的回答可能没有涉及到更详细的细节,并且可能会呈现一些过于简短或可能错误的细节。这不是为了解决每个安全细节,而是提供一个广泛的概述。软件包的安全性和真实性检查是一个讨论了相当长一段时间的主题(例如,请参阅),但到目前为止没有任何结果。

    为了防止目录列表(例如出于安全目的),您应该从配置文件中的每个选项指令中删除index关键字

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

    将其添加到.htaccess文件中

    <Directory />
      Options -Indexes
    </Directory>
    
    
    选项-索引
    
    谢谢Sven,非常感谢您的回复!