如何通过pip的hash检查功能确保Python包的安全性?

陌丽吖_9267

陌丽吖_9267

2026-08-12

866人浏览

原创

哈希校验需强制比对发布者提供的sha256值,pip download --hash是最轻量可靠入口;requirements.txt中--hash仅在pip install -r时生效但易过期,uv则默认并行校验pypi官方digests且不可关闭。

如何通过pip的hash检查功能确保python包的安全性?

直接用 pip install 安装包,不校验哈希,等于默认信任整个下载链路——而 PyPI 本身不强制签名,镜像源、CDN、本地缓存都可能被污染。真正起作用的安全动作,是让 pip 在下载或安装时**强制比对发布者提供的 SHA256 哈希值**,不匹配就中断,不妥协。

pip download --hash 是最轻量可靠的校验入口

它不依赖你本地有没有缓存,也不要求你手动算哈希,而是让 pip 自己去比对官方元数据里的 digest(来自 PyPI 的 JSON API),失败直接报错,不静默跳过。

  • 必须配合 --no-deps:否则 pip 会绕过哈希检查去解析依赖树
  • 只校验原始分发包(.whl 或 .tar.gz),不校验解压后内容
  • 哈希值得自己找:访问 https://pypi.org/pypi/requests/json,在 releases → 对应版本 → digests.sha256 字段里复制
  • 命令示例:pip download --no-deps --no-cache-dir --hash=sha256:abc123 requests==2.31.0

requirements.txt 里的 --hash 不是摆设,但容易失效

文件里写一堆 --hash=sha256:... 只有在用 pip install -r requirements.txt 时才生效;但它不是“一次生成永久有效”,一旦包作者上传新 wheel(哪怕只是换了个平台标签),旧哈希就作废。

Webnovel Serial Pipeline
Webnovel Serial Pipeline

构建并发布在 Quartz 平台上的韩语网络小说连载(草稿→封面→webp→章节 md→lint→发布),使用 Nano Banana Pro + ffmpeg。

下载
  • 失效表现:THESE PACKAGES DO NOT MATCH THE HASHES FROM THE REQUIREMENTS FILE
  • pip cache purge 只能解决缓存损坏导致的误报,不能修复哈希过期
  • 更新哈希的正解是重跑 pip-compile --generate-hashes requirements.in,而不是手改 requirements.txt
  • 如果没 requirements.in,可用 pip install --dry-run -r requirements.txt 2>&1 | grep "Collecting" 辅助确认实际拉取的版本

uv 默认开启哈希验证,且不给你关的机会

如果你用 uv 替代 pip,哈希校验是开箱即用的——它从 PyPI 获取元数据时就拿到官方哈希,下载完立刻比对,不匹配直接拒绝安装,连 --no-verify-hashes 这种开关都只建议调试用,生产环境不该碰。

  • 不需要额外配置,也不需要改 requirements.txt 格式
  • 比 pip 快 3–7 倍,哈希验证不拖慢速度,因为它是并行校验 + 预加载元数据
  • 注意:uv 不读 pip-tools 生成的 --hash 行,它用自己的机制查 PyPI,所以混用时别指望复用同一份哈希列表

哈希验证真正的复杂点不在怎么写命令,而在于你得清楚每个工具校验的是什么、从哪拿哈希、失效了怎么更新——pip 看的是你写的 --hash,uv 看的是 PyPI API 返回的 digests,而 pip-compile --generate-hashes 则是两者都查再合并。混用工具时,这些来源不一致,就是哈希不匹配的根源。

Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!

相关专题

更多
python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

2023.07.20

1731

4

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

2023.07.25

4424

7

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.31

1709

3

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

2023.08.03

26017

23

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.04

3167

5

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.04

3187

5

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

1183

5

python合并两个列表
python合并两个列表

Python是一种强大的编程语言,具有许多方便的功能和工具。在Python中,有多种方法可以合并两个列表。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.10

596

4

python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2463

5

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Uvicorn官方安装与入门手册
Uvicorn官方安装与入门手册

共0课时 | 0人学习

Python uv官方项目管理指南
Python uv官方项目管理指南

共0课时 | 0人学习

Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习