Python结合Bandit 完成代码安全检测
前言
- 本章讲解一下,在Python如何使用Bandit进行代码检测。
- Bandit 是一款 Python 源码分析框架,可用于 Python 代码的安全性分析。Bandit 使用标准库中的 AST 模块,将 Python 源码解析成 Python 语法节点构成的树。Bandit 允许用户编写自定义的测试。测试完成后,Bandit 会生成针对源码的安全报告。
安装Bandit
pip install bandit
检测是否安装成功, bandit -v (等同于: bandit --version)(rpa_client) C:\Users\xxxxxx\rpa_client_re\transfer_data>bandit --version
bandit 1.7.4python version = 3.7.13 (default, Mar 28 2022, 08:03:21) [MSC v.1916 64 bit (AMD64)](rpa_client) C:\Users\wang984\Desktop\Rpa_Re\rpa_client_re\transfer_data>bandit -v
usage: bandit [-h] [-r] [-a {file,vuln}] [-n CONTEXT_LINES] [-c CONFIG_FILE][-p PROFILE] [-t TESTS] [-s SKIPS][-l | --severity-level {all,low,medium,high}][-i | --confidence-level {all,low,medium,high}][-f {csv,custom,html,json,screen,txt,xml,yaml}][--msg-template MSG_TEMPLATE] [-o [OUTPUT_FILE]] [-v] [-d] [-q][--ignore-nosec] [-x EXCLUDED_PATHS] [-b BASELINE][--ini INI_PATH] [--exit-zero] [--version][targets [targets ...]]
Bandit举例的扫描列表 (B问题编号 问题名称)
-----------------------------------------------B101 assert_usedB102 exec_usedB103 set_bad_file_permissionsB104 hardcoded_bind_all_interfacesB105 hardcoded_password_stringB106 hardcoded_password_funcargB107 hardcoded_password_defaultB108 hardcoded_tmp_directoryB110 try_except_passB112 try_except_continueB201 flask_debug_trueB301 pickleB302 marshalB303 md5B304 ciphersB305 cipher_modesB306 mktemp_qB307 evalB308 mark_safeB309 httpsconnectionB310 urllib_urlopenB311 randomB312 telnetlibB313 xml_bad_cElementTreeB314 xml_bad_ElementTreeB315 xml_bad_expatreaderB316 xml_bad_expatbuilderB317 xml_bad_saxB318 xml_bad_minidomB319 xml_bad_pulldomB320 xml_bad_etreeB321 ftplibB323 unverified_contextB324 hashlib_new_insecure_functionsB325 tempnamB401 import_telnetlibB402 import_ftplibB403 import_pickleB404 import_subprocessB405 import_xml_etreeB406 import_xml_saxB407 import_xml_expatB408 import_xml_minidomB409 import_xml_pulldomB410 import_lxmlB411 import_xmlrpclibB412 import_httpoxyB413 import_pycryptoB501 request_with_no_cert_validationB502 ssl_with_bad_versionB503 ssl_with_bad_defaultsB504 ssl_with_no_versionB505 weak_cryptographic_keyB506 yaml_loadB507 ssh_no_host_key_verificationB601 paramiko_callsB602 subprocess_popen_with_shell_equals_trueB603 subprocess_without_shell_equals_trueB604 any_other_function_with_shell_equals_trueB605 start_process_with_a_shellB606 start_process_with_no_shellB607 start_process_with_partial_pathB608 hardcoded_sql_expressionsB609 linux_commands_wildcard_injectionB610 django_extra_usedB611 django_rawsql_usedB701 jinja2_autoescape_falseB702 use_of_mako_templatesB703 django_mark_safe
————————————————
- 问题具体可参考:https://bandit.readthedocs.io/en/1.7.4/plugins/index.html#complete-test-plugin-listing
使用案例
- 文件夹扫描 / 文件扫描
1. bandit -r 文件夹地址 (-r 必要参数,标识扫描内容)
2. bandit 文件地址 (eg: bandit test.py)
- 扫描结果记录至文件中
# 扫描当前文件夹下的所有py文件,并记录在文本呢文件中1. bandit *.py -o test_bandit.txt -f txt # -o 指定文件
3.扫描结果记录至html文件中
# 扫描工程根目录下的所有文件 .点表示所有!1. bandit -r . -o test_bandit.html -f html
- 检测内容是否存在某个或者某些问题
1. bandit -r . -o test_bandit.html -f html -t B107 仅扫描是否存在B1072. bandit -r . -o test_bandit.html -f html -t B107,B404 多个问题扫描使用逗号分隔
- 设置屏蔽列表
# 漏洞函数列表内自定义非 危险函数方法(1):1. bandit -r . -o test_bandit.html -f html -s B602,B404,B1072. -s 参数拼接 屏蔽函数ID, 使用,间隔方法(2):1. 对扫描文件,具体函数追加注释 # nosec2. from subprocess import Popen, PIPE # nosec方法(3):1. 在扫描文件夹目录中新建.bandit 文件2. 编辑文件内容[bandit]skips: B4043.多个问题屏蔽[bandit]skips: B404,B107,B602
总结
- 以上观点供大家参考使用,如有异议,欢迎一起谈论。
Python结合Bandit 完成代码安全检测相关推荐
- python 检查代码规范_Python代码规范检测
一定要注重代码规范,按照平时的代码管理,可以将Python代码规范检测分为两种: 静态本地检测:可以借助静态检查工具,比如:Flake8,Pylint等,调研了一下,用Flake8的相对较多,功能满足 ...
- 【python】15行代码实现猫脸检测(opencv)
文章目录 1. 项目简介 2. 项目地址 3. 依赖模块 4. 完整代码 5. 必要组件 5.1. haar级联特征分类器(精度高) 5.2. lbp级联特征分类器(速度快) 6. 成果展示 6.1. ...
- python代码检测工具及区别_flake8-python代码质量检测工具
flake8是python代码质量检测工具. 描述 flake8是一个命令行实用程序,用于在整个Python项目中加强样式的一致性. 默认情况下,它包括PyFlakes项目提供的lint检查,PyCo ...
- 【python】15行代码实现人脸检测(opencv)
文章目录 1. 项目简介 2. 项目地址 3. 依赖模块 4. 完整代码 5. 必要组件 5.1. haar级联特征分类器(精度高) 5.2. lbp级联特征分类器(速度快) 6. 成果展示 6.1. ...
- Vim之代码异步检测插件 ALE -- 实时检查verilog等代码的正确性
Vim之代码异步检测插件 ALE 前言 知名的 vim 代码检测插件主要是两个 syntastic neomake ALE ALE 虽是后起之秀,但目前是功能最强大的一个 实时检测.为了让代码可以在编 ...
- CopyCat 代码克隆检测发布,剑指开源软件抄袭
2019独角兽企业重金招聘Python工程师标准>>> 运营开源中国社区 10 年时间,对国内开源发展之迅猛非常的欣慰,但同时也存在很多问题是我们难以忽视的.其中一个对开源生态发展杀 ...
- ale插件 vim_Vim之代码异步检测插件 ALE -- 实时检查verilog等代码的正确性
Vim之代码异步检测插件 ALE 前言 知名的 vim 代码检测插件主要是两个 syntastic neomake ALE ALE 虽是后起之秀,但目前是功能最强大的一个 实时检测.为了让代码可以在编 ...
- 使用Jenkins+Sonarqueb进行自动化测试和代码质量检测
摘要: Jenkins Jenkins是一款开源的持续集成工具,它的特点:易于安装.易于配置.可扩展(自己开发插件),并且它拥有数以百计的成熟插件,这种插件式的特点提供可做任何事情的可能. 简介 Je ...
- 代码质量检测平台架构设计
「前言」 你是否清楚的了解自己的项目有多少个文件夹.多少个文件.多少行代码.多少个函数.多少个字符数? 你是否在项目中引入过代码质量检测相关的工具? 你是否在不同项目的切换中饱受indent=2还是i ...
最新文章
- 刚刚!中国高校毕业生薪酬排名Top100出炉!
- Java 中 Comparable 和 Comparator 比较
- keepalived详解 结合lvs
- 夫妻两一个两年内3张卡9次逾期,一人4次,还能办理房贷吗?
- linux内核线程socket,从Linux源码看Socket(TCP)的accept
- 巴西教育科技公司Arco Educacao上市 融资1.95亿美元
- ubuntu 升级python3_ubuntu16.04安装python3
- Web应用程序系统的多用户权限控制设计及实现-总述【1】
- Unity lightmap shader
- IDEA创建maven聚合项目多模块项目并在Tomcat启动图解详细教程
- 在计算机网络GAN代表什么,图解 生成对抗网络GAN 原理 超详解
- 智能驾驶ADAS算法设计及Prescan仿真(2): 自适应巡航ACC控制策略设计与simulink仿真
- 怎么把ide改成ahci_阳光明媚-将IDE模式更改为AHCI模式的方法(不用重装系统)
- 南开大学外国语言学及应用语言学专业(学硕)考研上岸经验分享
- BC1.2 PD协议
- 计算机网络适配器高级属性,右击我的电脑——属性——设备管理器——1394网络适配器下面那个选项右击属性——高级——大量传送减负——...
- 瑞吉外卖(27)-查看购物车信息、清空购物车功能开发
- 【NOI1999、LOJ#10019】生日蛋糕(搜索、最优化剪枝、可行性剪枝)
- python 基础知识汇总
- 怎样有效的检索文献?
热门文章
- //众神云集、群魔乱舞、以一抵百、砥砺前行// 计数排序
- 关于python语言、下列说法不正确的是-关于Python语言,以下说法错误的是():
- 【Jenkins】定时构建Build periodically-双周日程表配置
- 忘记 WinXP 登录密码的解决方案
- 计算机视觉的应用是否存在局限性?
- 电动车无刷电机控制器基本原理
- cancelBubble 的用法
- mysql分析表关键字_SQL调优利器——explain关键字详解(MySQL)
- jQuery 动态文字搜索功能
- java+mysql基于SSM的大学生兼职信息系统#毕业设计