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

Composer 本身在安装或更新包时会自动验证包的完整性,包括检查 SHA-256 或 SHA-1 校验和。这些校验信息来自 packagist.org 或你配置的私有仓库,并通过 Composer 的下载过程进行比对。
Composer 如何验证校验和
当你运行 composer install 或 composer update 时,Composer 会:
从 composer.lock 文件中读取已锁定的包版本及其 dist 信息(包括 url、type、reference、shasum 等)下载对应的压缩包(zip、tar 等)计算下载文件的实际 SHA-1 或 SHA-256 值与 lock 文件中记录的校验和进行比对如果不匹配,Composer 会中断安装并报错,防止使用被篡改的代码
注意:Composer 默认主要验证的是 SHA-1,但现代版本也支持 SHA-256(如果元数据中提供)。
查看 lock 文件中的校验和
打开你的 composer.lock 文件,找到某个包的条目,你会看到类似内容:
立即进入“豆包AI人工智官网入口”;
立即学习“豆包AI人工智能在线问答入口”;
{ "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 并与这个值对比。
手动验证包的 SHA-256 或 SHA-1
如果你需要手动验证某个包的完整性(比如审计安全),可以这样做:
从 composer.lock 获取 dist 的下载链接用命令行下载该包使用系统工具计算哈希值
例如:
# 下载包curl -L -o package.zip https://api.github.com/repos/symfony/polyfill-php80/zipball/a74f1821dfede52eb90acb7dd1ea6d831计算 SHA-1
shasum package.zip
输出:e8b2c6c6a7dcbb894bc90db5be1ae1f2133810a package.zip
计算 SHA-256
shasum -a 256 package.zip
将结果与 lock 文件中的 shasum 或仓库提供的 checksums 对比。
启用更严格的校验(推荐)
确保你的 Composer 配置启用了完整性检查:
保持 Composer 更新到最新版本(支持更强的校验机制)不要随意禁用 secure-http(避免 HTTP 下载)使用 COMPOSER_DISABLE_NETWORK=1 在离线环境中防止意外下载
Composer 还支持使用 ca-bundle 和 HTTPS 来保证下载源的安全,进一步配合哈希校验形成完整信任链。
基本上就这些。Composer 在背后默默做了很多安全工作,只要你不绕过 lock 文件、不关闭校验,日常使用是安全的。
以上就是composer如何验证包的sha256或sha1校验和的详细内容,更多请关注php中文网其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/130794.html
微信扫一扫
支付宝扫一扫