Composer通過校驗(yàn)和驗(yàn)證包完整性,運(yùn)行install或update時(shí)讀取composer.lock中的shasum值,下載包后計(jì)算實(shí)際SHA-1或SHA-256并比對(duì),不匹配則報(bào)錯(cuò)終止,確保代碼未被篡改。
Composer 本身在安裝或更新包時(shí)會(huì)自動(dòng)驗(yàn)證包的完整性,包括檢查 SHA-256 或 SHA-1 校驗(yàn)和。這些校驗(yàn)信息來自 packagist.org 或你配置的私有倉庫,并通過 Composer 的下載過程進(jìn)行比對(duì)。
當(dāng)你運(yùn)行 composer install 或 composer update 時(shí),Composer 會(huì):
注意:Composer 默認(rèn)主要驗(yàn)證的是 SHA-1,但現(xiàn)代版本也支持 SHA-256(如果元數(shù)據(jù)中提供)。
打開你的 composer.lock 文件,找到某個(gè)包的條目,你會(huì)看到類似內(nèi)容:
立即進(jìn)入“豆包AI人工智官網(wǎng)入口”;
立即學(xué)習(xí)“豆包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 校驗(yàn)和。Composer 下載后會(huì)計(jì)算實(shí)際 SHA-1 并與這個(gè)值對(duì)比。
如果你需要手動(dòng)驗(yàn)證某個(gè)包的完整性(比如審計(jì)安全),可以這樣做:
例如:
# 下載包 curl -L -o package.zip https://api.github.com/repos/symfony/polyfill-php80/zipball/a74f1821dfede52eb90acb7dd1ea6d831 <h1>計(jì)算 SHA-1</h1><p>shasum package.zip</p><h1>輸出:e8b2c6c6a7dcbb894bc90db5be1ae1f2133810a package.zip</h1><h1>計(jì)算 SHA-256</h1><p>shasum -a 256 package.zip
將結(jié)果與 lock 文件中的 shasum 或倉庫提供的 checksums 對(duì)比。
確保你的 Composer 配置啟用了完整性檢查:
Composer 還支持使用 ca-bundle 和 HTTPS 來保證下載源的安全,進(jìn)一步配合哈希校驗(yàn)形成完整信任鏈。
基本上就這些。Composer 在背后默默做了很多安全工作,只要你不繞過 lock 文件、不關(guān)閉校驗(yàn),日常使用是安全的。
以上就是composer如何驗(yàn)證包的sha256或sha1校驗(yàn)和的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!
每個(gè)人都需要一臺(tái)速度更快、更穩(wěn)定的 PC。隨著時(shí)間的推移,垃圾文件、舊注冊(cè)表數(shù)據(jù)和不必要的后臺(tái)進(jìn)程會(huì)占用資源并降低性能。幸運(yùn)的是,許多工具可以讓 Windows 保持平穩(wěn)運(yùn)行。
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號(hào)
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)