使用bandit提高python项目的安全性

354 阅读3分钟

Bandit是一个旨在查找Python代码中常见安全问题的工具。待办事项 这个 Bandit 处理每个文件,从中构建一个 AST,并运行适当的 针对 AST 节点的插件。一旦强盗完成扫描所有文件 它会生成一个报告。

Bandit最初是在OpenStack安全项目中开发的, 后来重新安置到PyCQA。

Bandit目前提供了40条检查规则。在使用初期可以使用推荐配置,避免过多的警告造成无从下手改进。随着推荐规则跑得很顺的情况下,可以尝试更多的规则组合来改进代码规范和发现潜在缺陷。

使用gui配置工具

使用gui配置工具,可以让配置bandit规则更简单。

在凌鲨(linksaas)的微应用里面可以找到bandit配置工具,快速对bandit进行配置。

凌鲨(linksaas)是以开源方式运作的,您可以从jihulab.com/linksaas 访问源代码。也可以从 linksaas.pro 下载预编译的版本。

image.png

image.png

image.png

附录

检查规则

  • B101 断言使用测试
  • B102 exec的使用测试
  • B103 设置文件权限的测试
  • B104 测试是否绑定到所有网络接口
  • B105 测试硬编码密码字符串的使用
  • B106 测试硬编码密码函数参数的使用
  • B107 测试是否使用硬编码密码参数默认值
  • B108 测试tmp目录的不安全使用情况
  • B109 测试未标记为机密的基于密码的配置选项
  • B110 测试在except块中是否存在pass
  • B111 测试是否使用以root身份运行的rootwrap
  • B112 测试是否在except块中存在continue
  • B113 测试丢失的请求超时
  • B201 在调试设置为true的情况下测试flask的使用
  • B202 测试tarfile.extractall的使用
  • B324 测试hashlib中不安全的md4、md5或sha1哈希函数的使用
  • B501 缺少证书验证的测试
  • B502 使用错误版本测试SSL使用情况
  • B503 使用指定的错误默认值测试SSL使用情况
  • B504 在未指定版本的情况下测试SSL的使用
  • B505 弱加密密钥使用测试
  • B506 yaml.load使用测试
  • B507 测试是否缺少主机密钥验证
  • B508 检查不安全的SNMP版本
  • B509 检查弱加密
  • B601 使用Paramiko测试脚本注入
  • B602 使用shell测试popen等于true
  • B603 测试是否使用不带shell的子进程等于true
  • B604 测试shell等于true的任何函数
  • B605 用shell启动进程的测试
  • B606 no shell启动进程的测试
  • B607 用部分路径启动进程的测试
  • B608 SQL注入测试
  • B609 通配符注入的使用测试
  • B610 额外函数上潜在的SQL注入
  • B611 RawSQL函数上潜在的SQL注入
  • B612 测试logging.config.listen的不安全使用
  • B701 在jinja2中进行非自动excaping测试
  • B702 mako模板的使用测试
  • B703 mark_safe函数上潜在的XSS