0

0

Python bandit + safety 的安全扫描链

舞夢輝影

舞夢輝影

发布时间:2026-02-14 19:18:47

|

686人浏览过

|

来源于php中文网

原创

bandit默认不启用b307(eval)、b602(subprocess shell=true)等高危规则,需显式指定;safety默认返回0,须加--exit-code 1才报错;二者均受环境、路径、版本解析影响,ci中需统一配置并验证数据准确性。

python bandit + safety 的安全扫描链

bandit 扫描不报已知高危函数,比如 eval()subprocess.Popen(..., shell=True)

bandit 默认只启用部分检测规则(test IDs),很多常见危险模式默认不开启。比如 eval() 检测对应 B101(assert used),但真正匹配 eval() 的是 B307subprocess.Popenshell=TrueB602 —— 这俩在默认配置里常被忽略。

实操建议:

立即学习Python免费学习笔记(深入)”;

LogoMaker
LogoMaker

免费在线制作Logo,在几分钟内完成标志设计

下载
  • 运行时显式启用关键规则:bandit -r . -x tests/ -s B307,B602,B110,B506B110try: ... except: passB506base64.b64decode 硬编码密钥)
  • 用配置文件统一管理:创建 .bandit,写入 skips: []tests: ["B307", "B602", "B110", "B506"],避免每次敲长命令
  • 注意 bandit 不分析字符串拼接后的动态调用(如 func_name = "eval"; getattr(__builtins__, func_name)(x)),这类绕过它抓不到

safety 检查失败:提示 No such file or directory: 'requirements.txt' 却明明有文件

常见原因是当前工作目录不对,或 safety 无法识别非标准依赖声明路径(比如用了 Pipfilepyproject.toml 或分环境的 requirements/dev.txt)。

实操建议:

立即学习Python免费学习笔记(深入)”;

  • 确认执行位置:pwd 输出是否真在含 requirements.txt 的目录?否则加 -r 指定路径:safety check -r ./reqs/production.txt
  • safety 本身不原生支持 Pipfilepoetry.lock,需先导出为标准格式:pipenv requirements > requirements.txtpoetry export -f requirements.txt --without-hashes > requirements.txt
  • 如果项目用 pyproject.toml + poetry,别直接跑 safety check,先 poetry export -f requirements.txt --without-hashes | safety check --stdin

bandit + safety 联动时,CI 中漏掉 safety 的 exit code 判断

safety check 发现漏洞默认返回 0(成功),不是 1 —— 这和多数扫描工具相反。若 CI 脚本只靠命令返回值判断成败,safety 就永远“不报错”。

实操建议:

立即学习Python免费学习笔记(深入)”;

  • 必须加 --full-report--output json 配合 --exit-code 参数:safety check --exit-code 1 -r requirements.txt,这样有漏洞才返回非零值
  • bandit 默认也是返回 0 即使发现 issue,得加 --exit-codebandit -r . --exit-code 1
  • 两个工具都建议加上 --quiet 避免日志干扰 CI 解析,但保留错误输出(safety--quiet 会抑制所有输出,慎用)

为什么本地扫出问题,CI 里却没报?常见环境差异点

bandit 和 safety 对 Python 版本、依赖解析方式、文件编码、甚至换行符都敏感。最常踩的坑是依赖版本解析不一致。

实操建议:

立即学习Python免费学习笔记(深入)”;

  • safety 依赖 pip showrequirements.txt 解析版本号,如果 CI 用 pip install -e . 安装本地包,而 setup.py 里没写死依赖(比如用 install_requires=["requests>=2.25"]),safety 可能读不到实际安装版本
  • bandit 在 CI 中若用容器运行,注意 Python 版本是否和本地一致 —— 某些检测(如 B322 输入函数)在 Python 3.12+ 行为变化,旧版 bandit 可能跳过
  • 确保 CI 使用的 requirements.txt 是生成的(pip freeze > requirements.txt),而非手写的草稿,否则版本范围模糊会导致 safety 无法精确匹配 CVE 数据库
安全扫描链不是“跑完就完”,bandit 看代码逻辑,safety 看依赖快照,两者覆盖维度不同,且都依赖你喂给它们的数据是否干净、路径是否准确、退出码是否真被监听 —— 这些地方一松动,整条链就失效。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

437

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

544

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

318

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

81

2025.09.10

pip安装使用方法
pip安装使用方法

安装步骤:1、确保Python已经正确安装在您的计算机上;2、下载“get-pip.py”脚本;3、按下Win + R键,然后输入cmd并按下Enter键来打开命令行窗口;4、在命令行窗口中,使用cd命令切换到“get-pip.py”所在的目录;5、执行安装命令;6、验证安装结果即可。大家可以访问本专题下的文章,了解pip安装使用方法的更多内容。

348

2023.10.09

更新pip版本
更新pip版本

更新pip版本方法有使用pip自身更新、使用操作系统自带的包管理工具、使用python包管理工具、手动安装最新版本。想了解更多相关的内容,请阅读专题下面的文章。

424

2024.12.20

pip设置清华源
pip设置清华源

设置方法:1、打开终端或命令提示符窗口;2、运行“touch ~/.pip/pip.conf”命令创建一个名为pip的配置文件;3、打开pip.conf文件,然后添加“[global];index-url = https://pypi.tuna.tsinghua.edu.cn/simple”内容,这将把pip的镜像源设置为清华大学的镜像源;4、保存并关闭文件即可。

784

2024.12.23

python升级pip
python升级pip

本专题整合了python升级pip相关教程,阅读下面的文章了解更多详细内容。

356

2025.07.23

pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

76

2026.02.13

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 22.4万人学习

Django 教程
Django 教程

共28课时 | 4.3万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.5万人学习

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

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