# ==============================================

# Bandit 安全门禁专用配置

# 功能:仅检测用户指定的安全规则

# ==============================================

severity_level: MEDIUM

confidence_level: MEDIUM

# 扫描时直接跳过的目录

exclude_dirs: [tests, test, venv, .venv, build, dist, migrations, __pycache__, ci]



# ==============================================

# 【白名单】只开启你明确指定的安全规则

# ==============================================

tests:

  # --- SQL 注入 ---

  - B608  # 禁止使用不可信数据拼接 SQL 语句



  # --- 命令注入 ---

  - B602  # 禁止调用 OS 命令解析器(如 os.popen, os.system 等)

  - B605  # 不安全的子进程调用(启动 shell 进程)

  - B607  # 启动带有部分可控参数的子进程(shell=True 风险)



  # --- 反序列化漏洞 ---

  - B301  # 禁止对不可信数据进行 pickle 反序列化



  # --- 加密安全 ---

  - B306  # 禁止使用弱加密算法(如 DES, RC4 等)

  - B321  # 禁止使用弱哈希算法(如 MD5, SHA1 等)



  # --- 敏感信息泄露 ---

  - B108  # 禁止将敏感信息(如临时文件路径)暴露在异常或日志中

  - B110  # 禁止在 except 块中使用 pass(可能导致异常被静默吞掉,掩盖安全问题)



# ==============================================

# 【黑名单】明确跳过不需要扫描的规则

# ==============================================

skips:

  # --- 代码风格与调试 ---

  - B101  # 断言语句(assert)的使用(生产环境可能被优化掉)

  - B102  # 使用 exec()(已在白名单 B307 中管控,此处跳过避免重复)

  - B103  # 设置文件权限为可写(os.chmod)

  - B104  # 绑定到所有接口(0.0.0.0)



  # --- 代码质量与异常处理 ---

  - B201  # 使用 Flask 的 debug=True

  - B202  # tarfile 提取文件时的路径遍历风险



  # --- 密码学与随机数 ---

  - B302  # 序列化(pickle, cPickle, dill, shelve)

  - B303  # 使用弱加密哈希函数(MD5, SHA1)(已在白名单 B321 中管控)

  - B304  # 使用弱密码加密模式(如 ECB)

  - B305  # 使用不安全的密码加密函数(如 cipher.encrypt)

  - B308  # 在 mark_safe 中使用非安全字符串

  - B311  # 使用标准库 random 生成伪随机数(不用于加密场景)



  # --- 网络与协议安全 ---

  - B401  # 导入 telnetlib(不安全的远程连接协议)

  - B402  # 导入 ftplib(不安全的文件传输协议)

  - B403  # 导入 pickle, cPickle, dill, shelve(已在白名单 B301 中管控)

  - B404  # 导入 subprocess 模块

  - B405  # 导入 xml.etree.ElementTree(存在 XML 外部实体注入风险)

  - B406  # 导入 xml 相关的库(如 sax, expat)

  - B407  # 导入 xml 相关的库(如 pulldom)

  - B408  # 导入 xml 相关的库(如 minidom)

  - B409  # 导入 xml 相关的库(如 lxml)

  - B410  # 导入 lxml(存在 XML 外部实体注入风险)

  - B411  # 导入 XMLRPC 相关的库(如 xmlrpclib)

  - B412  # 导入不安全的 HTTP 库(如 httplib, requests)

  - B413  # 导入不安全的加密库(如 pycrypto)

  - B415  # 导入不安全的加密库(如 pyghmi)



  # --- Web 框架安全 ---

  - B501  # 请求带有 verify=False(跳过 SSL 证书验证)

  - B502  # 使用弱 SSL/TLS 版本(如 SSLv2, SSLv3, TLSv1)

  - B503  # 使用弱 SSL/TLS 版本(如 TLSv1.0, TLSv1.1)

  - B504  # 使用弱 SSL/TLS 版本(如 TLSv1.2 但使用了不安全的密码套件)

  - B505  # 使用弱加密算法(如 DES, RC2, RC4, MD5, SHA1)

  - B506  # 使用弱加密算法(如 YAML load)

  - B507  # 使用弱加密算法(如 SSH 无主机密钥校验)

  - B508  # 使用弱加密算法(如 SSH 无主机密钥校验)

  - B509  # 使用弱加密算法(如 SNMP v1, v2)



  # --- 其他 ---

  - B601  # 使用 paramiko 的 exec_command(存在命令注入风险)

  - B603  # 使用 subprocess 不带 shell=True(存在命令注入风险)

  - B604  # 使用 os.popen(存在命令注入风险)

  - B606  # 使用 os.startfile(存在命令注入风险)

  - B609  # 使用 Linux 命令注入(如 os.system, os.popen)

  - B701  # 使用 Jinja2 模板自动转义(存在 XSS 风险)

  - B702  # 使用 Mako 模板(存在 XSS 风险)

  - B703  # 使用 Django 模板(存在 XSS 风险)