您有大量的Python代码来为您的新Django API投入。停止!提交并推动之前,首先使用CodeQl CLI扫描源代码!
照片解决方案
在本教程中,我们将使用CodeQl CLI扫描Python源代码,以了解开发环境中的漏洞。
先决条件
要完成本教程,您将需要安装CodeQl CLI。
我们的开发环境
本教程是使用Ubuntu 22.10,Python 3.10.6,CodeQl CLI 2.13.1和Visual Studio Code 1.78.2开发的。某些命令/构造可能非常跨平台。
什么是codeql?
codeQl是一种静态应用程序安全测试(SAST)扫描仪,可扫描源代码是否存在漏洞。漏洞是应用程序中的弱点,它允许攻击者对依赖应用程序的应用程序的所有者,应用程序用户和/或组织造成伤害。 al。大众攻击包括:SQL注入,跨场脚本和蛮力攻击。在开发过程的早期使用CodeQL之类的工具可以节省时间,金钱,并可能防止公司声誉损害。
1)设置CodeQL CLI
下载CodeQL CLI
将您的浏览器指向github上的CodeQL释放页面,然后下载与您使用的平台相对应的存档。对于本教程,我们正在下载并使用文件名中的Linux64指定的版本。
codeql版本:https://github.com/github/codeql-cli-binaries/releases
下载文件后,请从存档中提取文件。对于我们的Linux系统,我们将使用UNZIP命令。
$ unzip codeql-linux64.zip -d ~/bin/codeql/
我们将再迈出一个步骤,并将CodeQl可执行文件添加到我们的路径变量中,以便我们可以从OS中的任何位置调用codeqlâ。在我们的Ubuntu系统上,我们可以通过附加CODEQL可执行文件的路径来修改〜/.profile文件中的路径变量来实现此操作。
测试CodeQL CLI
我们可以通过在命令行中检查版本来测试CodeQl CLI。
$ codeql ––version
如果一切都正确设置,我们应该看到这样的输出:
CodeQL command-line toolchain release 2.13.1.
Copyright (C) 2019-2023 GitHub, Inc.
Unpacked in: /home/user/bin/codeql
Analysis results depend critically on separately distributed query and
extractor modules. To list modules that are visible to the toolchain,
use ‘codeql resolve qlpacks’ and ‘codeql resolve languages’.
您可以通过使用以下命令获取可以使用的语言列表进行进一步测试。
$ codeql resolve languages
下载CodeQL语言包
要下载python的预编译查询,请使用以下命令:
$ codeql pack download codeql/python-queries
2)创建CodeQL数据库
现在我们已经下载并配置了CodeQl,我们可以创建CodeQL数据库。
为CodeQL数据库创建目录
我们需要做的第一件事就是创建一个目录以容纳CodeQL数据库。
$ mkdir ~/codeql-dbs
创建CodeQL数据库
现在我们有一个数据库的位置,让我们更改为您的应用程序的目录。
$ cd ~/source/python-app
现在,我们设置了使用以下命令创建CodeQL数据库:
参数:
〜/codeql-dbs/python-app: codeql数据库位置。
语言:扫描语言。在这种情况下,Python。
$ codeql database create ~/codeql-dbs/python-app \
––language=python
如果一切都进行了计划,则数据库创建命令的输出将以这样的结尾:
“Successfully created database at /home/user/codeql-dbs/python-app.”
3)扫描源代码中的漏洞
使用CodeQL数据库创建,我们可以开始扫描我们的源代码。
为CodeQL输出创建目录
codeql在输出文件中汇总了其发现。让我们创建一个目录以容纳输出文件。
$ mkdir ./codeql-output/
代码分析
运行以下命令将指示CodeQl使用先前构建的数据库来分析代码。
参数:
〜/codeql-dbs/python-app: codeql数据库位置。
格式:输出格式。 (还支持SARIF和图形格式)
输出:输出文件的路径。
$ codeql database analyze ~/codeql-dbs/python-app \
––format=”csv” \
––output=”./codeql-output/scan.csv”
当CodeQl完成其分析时,控制台应显示一条消息:
Shutting down query evaluator.
Interpreting results.
Analysis produced the following diagnostic data:
| Diagnostic | Summary |
+——————————+———–+
| Compilation message | 3 results |
| Successfully extracted files | 6 results |
Analysis produced the following metric data:
| Metric | Value |
+—————————————-+——–+
| Total lines of Python code in the database | 13,700 |
查看CodeQL分析输出
$ nano ./codeql-output/scan.csv
概括
我们已经结束了本教程,您在其中学习了如何使用Codeql CLI扫描开发环境中的漏洞。
现在,在提交该django api的代码之前