SuperAPI AI 工具集

python-bandit

编程与开发

查看项目

更新于 10-16 04:30

技能介绍

用途:Bandit 是 Python 静态安全分析工具,逐文件构建 AST 并对节点运行安全插件,发现常见安全问题,结果按严重程度(LOW/MEDIUM/HIGH)和置信度(LOW/MEDIUM/HIGH)分类。

安装:pip install bandit;可选 pip install "bandit[toml]"(支持 pyproject.toml)、pip install "bandit[sarif]"(SARIF 输出)、pip install "bandit[baseline]"。需使用与被扫描项目相同的 Python 版本,因为依赖 ast 模块解析。

主要能力:递归扫描项目(bandit -r path/);按严重程度过滤(--severity-level high 或 -lll);按置信度过滤(--confidence-level high 或 -iii);只跑指定测试(-t B105,B106,B107);跳过测试(-s B101);使用命名 profile(-p ShellInjection);从 stdin 扫描(cat file.py | bandit -);显示上下文行(-n 3)。

配置:推荐 pyproject.toml 的 [tool.bandit] 段,设置 exclude_dirs、skips、tests,用 bandit -c pyproject.toml -r . 运行;.bandit(INI)在 -r 时自动发现;也支持 YAML 配置,可用 bandit-config-generator 生成模板。

误报抑制:行尾加 # nosec 抑制全部,或 # nosec B602, B607 只抑制指定测试,也可用测试名如 # nosec assert_used,并应注释说明理由。

输出格式:-f json/sarif/csv/xml/html/screen/yaml,配合 -o 输出文件。基线工作流:先生成 JSON 基线并提交版本控制,之后用 bandit -r . -b .bandit-baseline.json 只报告新增问题。

重点检查:硬编码密钥(B105/B106/B107)、注入(B602/B608)、弱加密(B324、B501–B505)、不安全反序列化(B301–B304)、模板注入(B701/B703/B704)。常见修复包括用环境变量替代硬编码密码、用 SHA-256 替代 MD5、用 yaml.safe_load、避免 shell=True、使用参数化查询、启用证书校验。

限制:仅做静态分析,可能产生误报;需匹配 Python 版本;assert 在 -O 下被剥离,不能用于安全关键检查。资料未提供收费、价格与平台信息。