供应商目录中的 Composer 锁定文件
Composer lock files in vendor dir
我刚刚发现 https://github.com/FriendsOfPHP/security-advisories 工具,它看起来是自动扫描社区提供的数据库中漏洞的好方法。
它会扫描 composer.lock
文件以查找包含漏洞的包。然而,这让我意识到我对 Composer 的理解并不应该是这样!
我有一个项目有一个 composer.json
文件,该文件 require
是一个 demo/package
。该演示包也有要求,例如 demo/dep
.
运行 composer install --no-dev
的结果是我有一个 composer.lock
文件,其中包括:
demo/package
版本1.0
demo/dep
版本1.2
到目前为止都很好,运行 symfony security:check /path/to/my/project/composer.lock
给了我绿灯,没有漏洞。
然而,仔细检查我的 vendor
目录中的文件,我可以看到有一个 vendor/demo/package/composer.lock
文件,其中包含对 demo/dep
版本 1.1
的引用- 它有一个安全漏洞。
据我所知,我安装了更安全的 1.2
版本 - 我的 项目的 composer.lock
文件也是如此,但是 为什么composer.lock
文件包含在供应商的包中?
这是否意味着在某处也安装了狡猾的代码?或者,如果 composer.lock
文件在其上方的目录中有一个 composer.lock
文件,我是否可以简单地忽略它? composer show
不列出嵌套锁定文件中的版本。或者,如果没有兄弟 ./vendor/
目录,我应该忽略 composer.lock 文件?
为什么不简单地检查您的文件夹以找到易受攻击的版本?如果有的话,你应该在那个包中找到一个 vendor
文件夹,那是那个包可以从它自己的 composer.lock
安装东西的地方
通常,只有包的 composer.json
被评估以安装依赖项。如果一个包的文件夹中有一个锁定文件,你应该问那个包的维护者为什么是这样,但是对于在你的系统上安装依赖项,这无关紧要。
旁注:写作 "usually" 指的是安装的标准模型。我见过一些粗糙的东西,其中 Composer 插件将其他规则放在适当的位置,但如果不了解更多结构,就不能对你的项目说这句话。
我刚刚发现 https://github.com/FriendsOfPHP/security-advisories 工具,它看起来是自动扫描社区提供的数据库中漏洞的好方法。
它会扫描 composer.lock
文件以查找包含漏洞的包。然而,这让我意识到我对 Composer 的理解并不应该是这样!
我有一个项目有一个 composer.json
文件,该文件 require
是一个 demo/package
。该演示包也有要求,例如 demo/dep
.
运行 composer install --no-dev
的结果是我有一个 composer.lock
文件,其中包括:
demo/package
版本1.0
demo/dep
版本1.2
到目前为止都很好,运行 symfony security:check /path/to/my/project/composer.lock
给了我绿灯,没有漏洞。
然而,仔细检查我的 vendor
目录中的文件,我可以看到有一个 vendor/demo/package/composer.lock
文件,其中包含对 demo/dep
版本 1.1
的引用- 它有一个安全漏洞。
据我所知,我安装了更安全的 1.2
版本 - 我的 项目的 composer.lock
文件也是如此,但是 为什么composer.lock
文件包含在供应商的包中?
这是否意味着在某处也安装了狡猾的代码?或者,如果 composer.lock
文件在其上方的目录中有一个 composer.lock
文件,我是否可以简单地忽略它? composer show
不列出嵌套锁定文件中的版本。或者,如果没有兄弟 ./vendor/
目录,我应该忽略 composer.lock 文件?
为什么不简单地检查您的文件夹以找到易受攻击的版本?如果有的话,你应该在那个包中找到一个 vendor
文件夹,那是那个包可以从它自己的 composer.lock
通常,只有包的 composer.json
被评估以安装依赖项。如果一个包的文件夹中有一个锁定文件,你应该问那个包的维护者为什么是这样,但是对于在你的系统上安装依赖项,这无关紧要。
旁注:写作 "usually" 指的是安装的标准模型。我见过一些粗糙的东西,其中 Composer 插件将其他规则放在适当的位置,但如果不了解更多结构,就不能对你的项目说这句话。