Composer通过校验和验证包完整性,运行install或update时读取composer.lock中的shasum值,下载包后计算实际SHA-1或SHA-256并比对,不匹配则报错终止,确保代码未被篡改。

Composer 本身在安装或更新包时会自动验证包的完整性,包括检查 SHA-256 或 SHA-1 校验和。这些校验信息来自 packagist.org 或你配置的私有仓库,并通过 Composer 的下载过程进行比对。
当你运行 composer install 或 composer update 时,Composer 会:
注意:Composer 默认主要验证的是 SHA-1,但现代版本也支持 SHA-256(如果元数据中提供)。
打开你的 composer.lock 文件,找到某个包的条目,你会看到类似内容:
{
"name": "symfony/polyfill-php80",
"version": "v1.27.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php80.git",
"reference": "a74f1821dfede52eb90acb7dd1ea6d831"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/a74f1821dfede52eb90acb7dd1ea6d831",
"reference": "a74f1821dfede52eb90acb7dd1ea6d831",
"shasum": "e8b2c6c6a7dcbb894bc90db5be1ae1f2133810a"
}
}其中 shasum 字段就是该 zip 包的 SHA-1 校验和。Composer 下载后会计算实际 SHA-1 并与这个值对比。
如果你需要手动验证某个包的完整性(比如审计安全),可以这样做:
例如:
# 下载包 curl -L -o package.zip https://api.github.com/repos/symfony/polyfill-php80/zipball/a74f1821dfede52eb90acb7dd1ea6d831 <h1>计算 SHA-1</h1><p>shasum package.zip</p><h1>输出:e8b2c6c6a7dcbb894bc90db5be1ae1f2133810a package.zip</h1><h1>计算 SHA-256</h1><p>shasum -a 256 package.zip
将结果与 lock 文件中的 shasum 或仓库提供的 checksums 对比。
确保你的 Composer 配置启用了完整性检查:
Composer 还支持使用 ca-bundle 和 HTTPS 来保证下载源的安全,进一步配合哈希校验形成完整信任链。
基本上就这些。Composer 在背后默默做了很多安全工作,只要你不绕过 lock 文件、不关闭校验,日常使用是安全的。
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号