Entry № 339
依赖固定
依赖固定 是什么?
依赖固定把软件依赖以精确版本进行声明,通常结合加密哈希,使构建始终消费同一批工件并抵御供应链篡改的实践。
依赖固定将宽松的版本范围(如 "^1.0.0")替换为精确版本,并尽量在锁文件(package-lock.json、poetry.lock、Pipfile.lock、Gemfile.lock、go.sum、Cargo.lock)中携带加密哈希。这样构建就具备可复现性,并能抵御静默升级、依赖混淆、typosquatting 和被篡改版本。现代实践还会把 GitHub Actions 及其他 CI 插件固定到 commit SHA 而非可变 tag。固定必须与主动的漏洞监控(SCA、Dependabot、Renovate)结合,确保补丁仍能流转,否则应用会陈旧并积累 CVE。SLSA、NIST SSDF、OWASP 以及可复现构建倡议都把哈希固定列为关键控制项。
● 示例
- 01
把所有第三方 GitHub Actions 固定到 commit SHA,而不是 v3 这种可变 tag。
- 02
在 CI 中使用 pip --require-hashes,搭配全部带哈希的 requirements.txt。
● 常见问题
依赖固定 是什么?
把软件依赖以精确版本进行声明,通常结合加密哈希,使构建始终消费同一批工件并抵御供应链篡改的实践。 它属于网络安全的 应用安全 分类。
依赖固定 是什么意思?
把软件依赖以精确版本进行声明,通常结合加密哈希,使构建始终消费同一批工件并抵御供应链篡改的实践。
如何防御 依赖固定?
针对 依赖固定 的防御通常结合技术控制与运营实践,详见上方完整定义。
依赖固定 还有哪些其他名称?
常见的别称包括: 版本固定, 哈希固定。