在我的项目中,我检查了github上的composer.lock文件。假设我需要在 composer.json 中有一个健康的依赖项,例如:
"require": {
"foo/bar": "v3.0"
},
Run Code Online (Sandbox Code Playgroud)
在我调用composer install之后,会创建一个 composer.lock 文件。
"packages": [
{
"name": "foo/bar",
"version": "v3.0",
"source": {
"type": "git",
"url": "https://github.com/foo/bar.git",
"reference": "bbafb0edb791b23220563d113d00371ea42aedaa"
},
"type": "project",
"license": [
"MIT"
],
"authors": [
{
"name": "Mr.Foo",
"email": "mr.foo@bar.de"
}
],
"time": "2019-09-30T12:13:55+00:00"
}
Run Code Online (Sandbox Code Playgroud)
假设拥有 foo/bar 存储库的攻击者将删除 v3.0 标签。攻击者会为 v3.0 命名一个不同的提交。有人可以确认composer install将始终检查 composer.lock 安装依赖项吗?如果我在没有composer.lock文件的情况下运行composer install,composer 将创建一个带有新引用(提交 ID)的新 .lock 文件。如果我使用composer.lock文件运行composer install,composer 将坚持提交 ID(“reference”:“bbafb0edb791b23220563d113d00371ea42aedaa”,旧版 …