前言
  1. 本章讲解一下,在Python如何使用Bandit进行代码检测。
  2. 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. 文件夹扫描 / 文件扫描
1. bandit -r 文件夹地址    (-r 必要参数,标识扫描内容)
2. bandit 文件地址   (eg: bandit test.py)
  1. 扫描结果记录至文件中
# 扫描当前文件夹下的所有py文件,并记录在文本呢文件中1. bandit *.py -o test_bandit.txt -f txt      # -o 指定文件

3.扫描结果记录至html文件中

# 扫描工程根目录下的所有文件 .点表示所有!1. bandit -r . -o test_bandit.html -f html
  1. 检测内容是否存在某个或者某些问题
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):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
总结
  1. 以上观点供大家参考使用,如有异议,欢迎一起谈论。

Python结合Bandit 完成代码安全检测相关推荐

  1. python 检查代码规范_Python代码规范检测

    一定要注重代码规范,按照平时的代码管理,可以将Python代码规范检测分为两种: 静态本地检测:可以借助静态检查工具,比如:Flake8,Pylint等,调研了一下,用Flake8的相对较多,功能满足 ...

  2. 【python】15行代码实现猫脸检测(opencv)

    文章目录 1. 项目简介 2. 项目地址 3. 依赖模块 4. 完整代码 5. 必要组件 5.1. haar级联特征分类器(精度高) 5.2. lbp级联特征分类器(速度快) 6. 成果展示 6.1. ...

  3. python代码检测工具及区别_flake8-python代码质量检测工具

    flake8是python代码质量检测工具. 描述 flake8是一个命令行实用程序,用于在整个Python项目中加强样式的一致性. 默认情况下,它包括PyFlakes项目提供的lint检查,PyCo ...

  4. 【python】15行代码实现人脸检测(opencv)

    文章目录 1. 项目简介 2. 项目地址 3. 依赖模块 4. 完整代码 5. 必要组件 5.1. haar级联特征分类器(精度高) 5.2. lbp级联特征分类器(速度快) 6. 成果展示 6.1. ...

  5. Vim之代码异步检测插件 ALE -- 实时检查verilog等代码的正确性

    Vim之代码异步检测插件 ALE 前言 知名的 vim 代码检测插件主要是两个 syntastic neomake ALE ALE 虽是后起之秀,但目前是功能最强大的一个 实时检测.为了让代码可以在编 ...

  6. CopyCat 代码克隆检测发布,剑指开源软件抄袭

    2019独角兽企业重金招聘Python工程师标准>>> 运营开源中国社区 10 年时间,对国内开源发展之迅猛非常的欣慰,但同时也存在很多问题是我们难以忽视的.其中一个对开源生态发展杀 ...

  7. ale插件 vim_Vim之代码异步检测插件 ALE -- 实时检查verilog等代码的正确性

    Vim之代码异步检测插件 ALE 前言 知名的 vim 代码检测插件主要是两个 syntastic neomake ALE ALE 虽是后起之秀,但目前是功能最强大的一个 实时检测.为了让代码可以在编 ...

  8. 使用Jenkins+Sonarqueb进行自动化测试和代码质量检测

    摘要: Jenkins Jenkins是一款开源的持续集成工具,它的特点:易于安装.易于配置.可扩展(自己开发插件),并且它拥有数以百计的成熟插件,这种插件式的特点提供可做任何事情的可能. 简介 Je ...

  9. 代码质量检测平台架构设计

    「前言」 你是否清楚的了解自己的项目有多少个文件夹.多少个文件.多少行代码.多少个函数.多少个字符数? 你是否在项目中引入过代码质量检测相关的工具? 你是否在不同项目的切换中饱受indent=2还是i ...

最新文章

  1. 刚刚!中国高校毕业生薪酬排名Top100出炉!
  2. Java 中 Comparable 和 Comparator 比较
  3. keepalived详解 结合lvs
  4. 夫妻两一个两年内3张卡9次逾期,一人4次,还能办理房贷吗?
  5. linux内核线程socket,从Linux源码看Socket(TCP)的accept
  6. 巴西教育科技公司Arco Educacao上市 融资1.95亿美元
  7. ubuntu 升级python3_ubuntu16.04安装python3
  8. Web应用程序系统的多用户权限控制设计及实现-总述【1】
  9. Unity lightmap shader
  10. IDEA创建maven聚合项目多模块项目并在Tomcat启动图解详细教程
  11. 在计算机网络GAN代表什么,图解 生成对抗网络GAN 原理 超详解
  12. 智能驾驶ADAS算法设计及Prescan仿真(2): 自适应巡航ACC控制策略设计与simulink仿真
  13. 怎么把ide改成ahci_阳光明媚-将IDE模式更改为AHCI模式的方法(不用重装系统)
  14. 南开大学外国语言学及应用语言学专业(学硕)考研上岸经验分享
  15. BC1.2 PD协议
  16. 计算机网络适配器高级属性,右击我的电脑——属性——设备管理器——1394网络适配器下面那个选项右击属性——高级——大量传送减负——...
  17. 瑞吉外卖(27)-查看购物车信息、清空购物车功能开发
  18. 【NOI1999、LOJ#10019】生日蛋糕(搜索、最优化剪枝、可行性剪枝)
  19. python 基础知识汇总
  20. 怎样有效的检索文献?

热门文章

  1. //众神云集、群魔乱舞、以一抵百、砥砺前行// 计数排序
  2. 关于python语言、下列说法不正确的是-关于Python语言,以下说法错误的是():
  3. 【Jenkins】定时构建Build periodically-双周日程表配置
  4. 忘记 WinXP 登录密码的解决方案
  5. 计算机视觉的应用是否存在局限性?
  6. 电动车无刷电机控制器基本原理
  7. cancelBubble 的用法
  8. mysql分析表关键字_SQL调优利器——explain关键字详解(MySQL)
  9. jQuery 动态文字搜索功能
  10. java+mysql基于SSM的大学生兼职信息系统#毕业设计