0

0

composer如何验证包的sha256或sha1校验和

裘德小鎮的故事

裘德小鎮的故事

发布时间:2025-10-13 12:23:01

|

821人浏览过

|

来源于php中文网

原创

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

composer如何验证包的sha256或sha1校验和

Composer 本身在安装或更新包时会自动验证包的完整性,包括检查 SHA-256 或 SHA-1 校验和。这些校验信息来自 packagist.org 或你配置的私有仓库,并通过 Composer 的下载过程进行比对。

Composer 如何验证校验和

当你运行 composer installcomposer 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 文件,找到某个包的条目,你会看到类似内容:

{
    "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

如果你需要手动验证某个包的完整性(比如审计安全),可以这样做:

  1. composer.lock 获取 dist 的下载链接
  2. 用命令行下载该包
  3. 使用系统工具计算哈希值

例如:

AiPPT模板广场
AiPPT模板广场

AiPPT模板广场-PPT模板-word文档模板-excel表格模板

下载
# 下载包
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是什么插件
composer是什么插件

Composer是一个PHP的依赖管理工具,它可以帮助开发者在PHP项目中管理和安装依赖的库文件。Composer通过一个中央化的存储库来管理所有的依赖库文件,这个存储库包含了各种可用的依赖库的信息和版本信息。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

149

2023.12.25

http500解决方法
http500解决方法

http500解决方法有检查服务器日志、检查代码错误、检查服务器配置、检查文件和目录权限、检查资源不足、更新软件版本、重启服务器或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

326

2023.11.09

http请求415错误怎么解决
http请求415错误怎么解决

解决方法:1、检查请求头中的Content-Type;2、检查请求体中的数据格式;3、使用适当的编码格式;4、使用适当的请求方法;5、检查服务器端的支持情况。更多http请求415错误怎么解决的相关内容,可以阅读下面的文章。

401

2023.11.14

HTTP 503错误解决方法
HTTP 503错误解决方法

HTTP 503错误表示服务器暂时无法处理请求。想了解更多http错误代码的相关内容,可以阅读本专题下面的文章。

1585

2024.03.12

http与https有哪些区别
http与https有哪些区别

http与https的区别:1、协议安全性;2、连接方式;3、证书管理;4、连接状态;5、端口号;6、资源消耗;7、兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1933

2024.08.16

http与https有哪些区别
http与https有哪些区别

http与https的区别:1、协议安全性;2、连接方式;3、证书管理;4、连接状态;5、端口号;6、资源消耗;7、兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1933

2024.08.16

c++主流开发框架汇总
c++主流开发框架汇总

本专题整合了c++开发框架推荐,阅读专题下面的文章了解更多详细内容。

78

2026.01.09

c++框架学习教程汇总
c++框架学习教程汇总

本专题整合了c++框架学习教程汇总,阅读专题下面的文章了解更多详细内容。

45

2026.01.09

学python好用的网站推荐
学python好用的网站推荐

本专题整合了python学习教程汇总,阅读专题下面的文章了解更多详细内容。

118

2026.01.09

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 8.5万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 6.9万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号