CN113987511A - Sql注入漏洞的检测方法、装置、计算机设备及存储介质 - Google Patents
Sql注入漏洞的检测方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN113987511A CN113987511A CN202111266341.XA CN202111266341A CN113987511A CN 113987511 A CN113987511 A CN 113987511A CN 202111266341 A CN202111266341 A CN 202111266341A CN 113987511 A CN113987511 A CN 113987511A
- Authority
- CN
- China
- Prior art keywords
- sql
- statement
- risk
- development project
- sql statement
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000002347 injection Methods 0.000 title claims abstract description 70
- 239000007924 injection Substances 0.000 title claims abstract description 70
- 238000000034 method Methods 0.000 title claims abstract description 51
- 238000011161 development Methods 0.000 claims abstract description 172
- 238000001514 detection method Methods 0.000 claims abstract description 51
- 238000012216 screening Methods 0.000 claims abstract description 14
- 230000006870 function Effects 0.000 claims description 22
- 230000002159 abnormal effect Effects 0.000 claims description 15
- 238000004590 computer program Methods 0.000 claims description 13
- 238000012360 testing method Methods 0.000 claims description 13
- 238000000605 extraction Methods 0.000 claims description 3
- 238000012423 maintenance Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000001788 irregular Effects 0.000 description 1
- 239000000243 solution Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请涉及漏洞检测领域,揭示了一种SQL注入漏洞的检测方法、装置、计算机设备及存储介质,其中方法包括:获取开发工程;解析所述开发工程,获取所述开发工程包含的业务代码;基于预配置的语法特征识别所述业务代码,提取所述业务代码中的目标业务代码;所述目标业务代码包括SQL语句;获取所述目标业务代码的分类类别,根据所述分类类别匹配风险语句范本;所述风险语句范本中包含SQL语句的形式及执行规则;根据所述风险语句范本对所述SQL语句进行漏洞检测,从所述SQL语句中筛选不满足对应SQL语句的形式或执行规则的风险SQL语句;根据所述风险SQL语句确定所述开发工程的SQL注入漏洞。本申请能够提高SQL注入漏洞检测效率及准确率。
Description
技术领域
本申请涉及到漏洞检测领域,特别是涉及到一种SQL注入漏洞的检测方法、装置、计算机设备及存储介质。
背景技术
目前在软件工程开发中会存在不规范的代码,容易出现SQL注入漏洞,目前对于软件工程中的漏洞,需要开发人员对软件工程进行多次调试测试,每一次测试都要对工程代码进行全局扫描,如有修改,又要重新按步骤进行扫描,导致SQL注入漏洞的检测效率低。
发明内容
本申请的主要目的为提供一种SQL注入漏洞的检测方法、装置、计算机设备及存储介质,旨在解决SQL注入漏洞的检测效率低的问题。
为了实现上述发明目的,本申请提出一种SQL注入漏洞的检测方法,包括:
获取开发工程;
解析所述开发工程,获取所述开发工程包含的业务代码;
基于预配置的语法特征识别所述业务代码,提取所述业务代码中的目标业务代码;所述目标业务代码包括SQL语句;
获取所述目标业务代码的分类类别,根据所述分类类别匹配风险语句范本;所述风险语句范本中包含SQL语句的形式及执行规则;
根据所述风险语句范本对所述SQL语句进行漏洞检测,从所述SQL语句中筛选不满足对应SQL语句的形式或执行规则的风险SQL语句;
根据所述风险SQL语句确定所述开发工程的SQL注入漏洞。
进一步地,所述基于预配置的语法特征识别所述业务代码,提取所述业务代码中的目标业务代码,包括:
获取待检测的功能项目的第一业务代码;
根据所述功能项目从语法库中匹配对应的语法特征作为预配置的语法特征;
基于预配置的语法特征识别所述第一业务代码,提取所述第一业务代码中的目标业务代码。
进一步地,所述获取待检测的功能项目的第一业务代码,包括:
获取所述开发工程包含的注释;
根据预设关键词从所述注释中进行匹配,确定匹配范围;
获取所述匹配范围内的待选业务代码,将所述待选代码配置为待检测的功能项目的第一业务代码。
进一步地,所述根据所述风险语句范本对所述SQL语句进行漏洞检测,从所述SQL语句中筛选不满足对应SQL语句的形式及执行规则的风险SQL语句,包括:
检测所述SQL语句的形式与对应的标准形式的差异度是否大于预设值以及检测所述SQL语句缺少对应的执行权限条件;
若所述SQL语句的形式与对应的标准形式的差异度大于预设值,确定所述SQL语句为不满足对应SQL语句的形式要求的风险SQL语句;或,
若所述SQL语句缺少对应的执行权限条件,确定所述SQL语句为不满足对应SQL语句的执行规则要求的风险SQL语句。
进一步地,所述确定所述SQL语句为不满足对应SQL语句的形式要求的风险SQL语句之后,还包括:
根据不满足所述SQL语句的形式要求的风险SQL语句生成错误SQL语句,并将所述错误SQL语句关联所述形式要求后在对应的位置处区别显示;
所述确定所述SQL语句为不满足对应SQL语句的执行规则要求的风险SQL语句之后,还包括:
根据不满足所述SQL语句的执行规则要求的风险SQL语句生成异常SQL语句,并将所述异常SQL语句提交至相应的通知渠道以进行异常SQL语句屏蔽审核。
进一步地,所述根据所述风险SQL语句确定所述开发工程的SQL注入漏洞之后,还包括:
获取所述风险SQL语句的替换样本;
根据所述替换样本替换所述开发工程中对应的所述风险SQL语句,生成目标开发工程;
将所述目标开发工程提交至测试服务。
进一步的,所述解析所述开发工程,获取所述开发工程包含的业务代码,包括:
识别所述开发工程的数据格式;
根据所述数据格式匹配对应模板的解析脚本;
根据所述解析脚本解析所述开发工程,获取所述开发工程包含的业务代码。
本申请还提供一种SQL注入漏洞的检测装置,包括:
数据获取模块,用于获取开发工程;
工程解析模块,用于解析所述开发工程,获取所述开发工程包含的业务代码;
代码提取模块,用于基于预配置的语法特征识别所述业务代码,提取所述业务代码中的目标业务代码;所述目标业务代码包括SQL语句;
规则范本模块,用于获取所述目标业务代码的分类类别,根据所述分类类别匹配风险语句范本;所述风险语句范本中包含SQL语句的形式及执行规则;
漏洞检测模块,用于根据所述风险语句范本对所述SQL语句进行漏洞检测,从所述SQL语句中筛选不满足对应SQL语句的形式或执行规则的风险SQL语句;
漏洞确定模块,用于根据所述风险SQL语句确定所述开发工程的SQL注入漏洞。
本申请还提供一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述SQL注入漏洞的检测方法的步骤。
本申请还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述SQL注入漏洞的检测方法的步骤。
本申请例提供了一种检测开发工程中的SQL注入漏洞的方法,开发工程需要上线测试之前,需要对开发工程进行漏洞检测,首先获取开发工程所述开发工程为源代码工程,可以包括多种格式,然后解析所述开发工程,获取所述开发工程包含的业务代码,即获得开发工程中各个功能模块的业务代码,基于预配置的语法特征识别所述业务代码,提取所述业务代码中的目标业务代码;所述目标业务代码包括SQL语句,所述SQL语句执行时对数据库执行包括增删改查的操作,该些语句存在被注入的风险,获取所述目标业务代码的分类类别,根据所述分类类别匹配风险语句范本;所述风险语句范本中包含SQL语句的形式及执行规则,根据所述风险语句范本对所述SQL语句进行漏洞检测,从所述SQL语句中筛选不满足对应SQL语句的形式或执行规则的风险SQL语句,当SQL语句的形式不满足所述风险语句范本的形式要求或所述SQL语句的执行逻辑不满足所述执行规则时,确定所述SQL语句不满足对应SQL语句的形式及执行规则,根据所述风险SQL语句确定所述开发工程的SQL注入漏洞,从而输出开发工程的SQL注入漏洞,提高对开发工程的SQL注入漏洞的检测效率,以及方便对开发工程进行修改,提高开发工程的维护效率。
附图说明
图1为本申请SQL注入漏洞的检测方法的一实施例流程示意图;
图2为本申请SQL注入漏洞的检测装置的一实施例结构示意图;
图3为本申请计算机设备的一实施例结构示意框图。
本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
参照图1,本申请实施例提供一种SQL注入漏洞的检测方法,包括步骤S10-S60,对于所述SQL注入漏洞的检测方法的各个步骤的详细阐述如下。
S10、获取开发工程。
本实施例应用于开发工程的SQL(Structured Query Language,结构化查询语言)注入漏洞的识别及管理中,SQL Injection(SQL注入漏洞)作为危害性和严重性很高的一种漏洞,对于开发工程存在着显著的危险,当开发工程需要上线测试之前,需要对开发工程进行漏洞检测,本实施例是对开发工程是否存在SQL注入漏洞进行检测,通过开发检测工具,当向所述检测工具上传开发工程后,检测工具基于本实施例方法对所述开发工程进行SQL注入漏洞的检测。具体的,当开发工程上传后,获取所述开发工程,所述开发工程为源代码工程,所述源代码工程包括多种格式的源代码工程。
S20、解析所述开发工程,获取所述开发工程包含的业务代码。
本实施例中,当获取开发工程之后,解析所述开发工程,获取所述开发工程包含的业务代码,不同格式的开发工程上传至检测工具后,基于所述开发工程对应的格式确定解析脚本,然后基于所述解析脚本解析所述开发工程,从而获取所述开发工程包含的业务代码,即将所述开发工程包含的业务代码进行展开,获得开发工程中各个功能模块的业务代码。
S30、基于预配置的语法特征识别所述业务代码,提取所述业务代码中的目标业务代码;所述目标业务代码包括SQL语句。
本实施例中,在获取所述开发工程包含的业务代码之后,不同分类的业务代码的编写特征不相同,将业务代码的编写特征定义为该分类下的业务代码的语法特征,然后基于预配置的语法特征识别所述业务代码,提取所述业务代码中的目标业务代码;所述目标业务代码包括SQL语句,即提取业务代码中包含SQL语句的代码,所述SQL语句执行时对数据库执行包括增删改查的操作。
S40、获取所述目标业务代码的分类类别,根据所述分类类别匹配风险语句范本;所述风险语句范本中包含SQL语句的形式及执行规则。
本实施例中,当识别所述业务代码,从所述业务代码中提取了目标业务代码及对应的SQL语句之后,获取所述目标业务代码的分类类别,所述分类类别包括登录类别,查询类别,修改类别,不同的类别下对应存在的漏洞不同,例如对于登录类别,可以通过方式1注入SQL语句,对于查询类别,可以通过方式2注入SQL语句,即对于登录类别,需要防范方式1的漏洞,对于查询类别,需要防范方式2的漏洞,从而根据所述分类类别匹配风险语句范本,所述风险语句范本中包含SQL语句的形式及执行规则。
S50、根据所述风险语句范本对所述SQL语句进行漏洞检测,从所述SQL语句中筛选不满足对应SQL语句的形式或执行规则的风险SQL语句。
本实施例中,在根据所述分类类别匹配风险语句范本后,根据所述风险语句范本对所述SQL语句进行漏洞检测,即从所述SQL语句中筛选不满足对应SQL语句的形式及执行规则的风险SQL语句,当SQL语句的形式不满足所述风险语句范本的形式要求或所述SQL语句的执行逻辑不满足所述执行规则时,确定所述SQL语句不满足对应SQL语句的形式及执行规则,将其定义为风险SQL语句,从而逐一对SQL语句进行漏洞检测。
S60、根据所述风险SQL语句确定所述开发工程的SQL注入漏洞。
本实施例中,在从所述SQL语句中筛选不满足对应SQL语句的形式及执行规则的风险SQL语句之后,根据所述风险SQL语句确定所述开发工程的SQL注入漏洞,在一种实施方式中,将所述风险SQL语句的违规选项标出进行提示,并且生成所述风险SQL语句的违规原因,例如SQL语句缺少必要的限定条件或权限条件,从而输出开发工程的SQL注入漏洞,提高对开发工程的SQL注入漏洞的检测效率,以及方便对开发工程进行修改,提高开发工程的维护效率。
本实施例提供了一种检测开发工程中的SQL注入漏洞的方法,开发工程需要上线测试之前,需要对开发工程进行漏洞检测,首先获取开发工程所述开发工程为源代码工程,可以包括多种格式,然后解析所述开发工程,获取所述开发工程包含的业务代码,即获得开发工程中各个功能模块的业务代码,基于预配置的语法特征识别所述业务代码,提取所述业务代码中的目标业务代码;所述目标业务代码包括SQL语句,所述SQL语句执行时对数据库执行包括增删改查的操作,该些语句存在被注入的风险,获取所述目标业务代码的分类类别,根据所述分类类别匹配风险语句范本;所述风险语句范本中包含SQL语句的形式及执行规则,根据所述风险语句范本对所述SQL语句进行漏洞检测,从所述SQL语句中筛选不满足对应SQL语句的形式或执行规则的风险SQL语句,当SQL语句的形式不满足所述风险语句范本的形式要求或所述SQL语句的执行逻辑不满足所述执行规则时,确定所述SQL语句不满足对应SQL语句的形式及执行规则,根据所述风险SQL语句确定所述开发工程的SQL注入漏洞,从而输出开发工程的SQL注入漏洞,提高对开发工程的SQL注入漏洞的检测效率,以及方便对开发工程进行修改,提高开发工程的维护效率。
在一个实施例中,所述基于预配置的语法特征识别所述业务代码,提取所述业务代码中的目标业务代码,包括:
获取待检测的功能项目的第一业务代码;
根据所述功能项目从语法库中匹配对应的语法特征作为预配置的语法特征;
基于预配置的语法特征识别所述第一业务代码,提取所述第一业务代码中的目标业务代码。
本实施例中,在基于预配置的语法特征识别所述业务代码,提取所述业务代码中的目标业务代码的过程中,获取待检测的功能项目的第一业务代码,可以针对开发工程中的某个特定功能的业务代码进行检测,例如针对搜索功能项目进行检测,此时,获取待检测的功能项目的第一业务代码,根据所述功能项目从语法库中匹配对应的语法特征作为预配置的语法特征,不同的功能项目具有不同的语法编写特征,根据不同的语法特征可以准确识别出对应功能项目的业务代码,即基于预配置的语法特征识别所述第一业务代码,提取所述第一业务代码中的目标业务代码,不需要对开发工程的业务代码进行全盘扫描,仅仅对存在SQL语句的功能项目进行检测,从而提高不同功能项目的业务代码的检测效率。
在一个实施例中,所述获取待检测的功能项目的第一业务代码,包括:
获取所述开发工程包含的注释;
根据预设关键词从所述注释中进行匹配,确定匹配范围;
获取所述匹配范围内的待选业务代码,将所述待选代码配置为待检测的功能项目的第一业务代码。
本实施例中,在获取待检测的功能项目的第一业务代码的过程中,获取所述开发工程包含的注释,所述开发工程包含了业务代码及业务代码的注释;根据预设关键词从所述注释中进行匹配,当需要对功能项目进行检测时,则选取该功能项目的预设管检测,然后将关键词与注释进行匹配,基于两个不同的管检测便能确定匹配范围;获取所述匹配范围内的待选业务代码,将所述待选代码配置为待检测的功能项目的第一业务代码,从而提高不同功能项目的业务代码的识别效率。
在一个实施例中,所述根据所述风险语句范本对所述SQL语句进行漏洞检测,从所述SQL语句中筛选不满足对应SQL语句的形式及执行规则的风险SQL语句,包括:
检测所述SQL语句的形式与对应的标准形式的差异度是否大于预设值以及检测所述SQL语句缺少对应的执行权限条件;
若所述SQL语句的形式与对应的标准形式的差异度大于预设值,确定所述SQL语句为不满足对应SQL语句的形式要求的风险SQL语句;或,
若所述SQL语句缺少对应的执行权限条件,确定所述SQL语句为不满足对应SQL语句的执行规则要求的风险SQL语句。
本实施例中,在根据所述风险语句范本对所述SQL语句进行漏洞检测,从所述SQL语句中筛选不满足对应SQL语句的形式及执行规则的风险SQL语句的过程中,根据所述风险语句范本对所述SQL语句进行漏洞检测,具体的,检测所述SQL语句的形式与对应的标准形式的差异度是否大于预设值以及检测所述SQL语句缺少对应的执行权限条件,若所述SQL语句的形式与对应的标准形式的差异度大于预设值,确定所述SQL语句不满足对应SQL语句的形式要求,确定所述SQL语句为不满足对应SQL语句的形式要求的风险SQL语句;若所述SQL语句的缺少对应的执行权限条件,确定所述SQL语句不满足对应SQL语句的执行规则要求,确定所述SQL语句为不满足对应SQL语句的执行规则要求的风险SQL语句,从而提高SQL语句的漏洞检测效率。
在一个实施例中,所述确定所述SQL语句为不满足对应SQL语句的形式要求的风险SQL语句之后,还包括:
根据不满足所述SQL语句的形式要求的风险SQL语句生成错误SQL语句,并将所述错误SQL语句关联所述形式要求后在对应的位置处区别显示;
所述确定所述SQL语句为不满足对应SQL语句的执行规则要求的风险SQL语句之后,还包括:
根据不满足所述SQL语句的执行规则要求的风险SQL语句生成异常SQL语句,并将所述异常SQL语句提交至相应的通知渠道以进行异常SQL语句屏蔽审核。
本实施例中,在确定所述SQL语句为不满足对应SQL语句的形式要求的风险SQL语句之后,根据不满足所述SQL语句的形式要求的风险SQL语句生成错误SQL语句,并将所述错误SQL语句关联所述形式要求后在对应的位置处区别显示,包括在开发工程的代码中进行高亮显示;在确定所述SQL语句为不满足对应SQL语句的执行规则要求的风险SQL语句之后,根据不满足所述SQL语句的执行规则要求的风险SQL语句生成异常SQL语句,并将所述异常SQL语句提交至相应的通知渠道进行屏蔽审核,可以快速地屏蔽异常的SQL语句,提高安全防范的效率。
在一个实施例中,所述根据所述风险SQL语句确定所述开发工程的SQL注入漏洞之后,还包括:
获取所述风险SQL语句的替换样本;
根据所述替换样本替换所述开发工程中对应的所述风险SQL语句,生成目标开发工程;
将所述目标开发工程提交至测试服务。
本实施例中,在根据所述风险SQL语句确定所述开发工程的SQL注入漏洞之后,获取所述风险SQL语句的替换样本,即确定了风险SQL语句的原因,此时根据所述替换样本替换所述开发工程中对应的所述风险SQL语句,生成目标开发工程,从而对风险SQL语句进行修改,使得生成的目标开发工程具有相应的防范SQL注入的能力,然后才将所述目标开发工程提交至测试服务,以进行开发工程的测试工作,避免开发工程反复地修改而造成频繁地上传,从而提高资源的利用率。
在一个实施例中,所述解析所述开发工程,获取所述开发工程包含的业务代码,包括:
识别所述开发工程的数据格式;
根据所述数据格式匹配对应模板的解析脚本;
根据所述解析脚本解析所述开发工程,获取所述开发工程包含的业务代码。
本实施例中,在解析所述开发工程,获取所述开发工程包含的业务代码的过程中,识别所述开发工程的数据格式,根据所述数据格式可以识别出该开发工程是以什么开发工具进行开发的,不同的开发工具在开发时具有不同的模板,然后根据所述数据格式匹配对应模板的解析脚本,再根据所述解析脚本解析所述开发工程,获取所述开发工程包含的业务代码,提高业务代码的解析效率。
参照图2,本申请还提供一种SQL注入漏洞的检测装置,包括:
数据获取模块10,用于获取开发工程;
工程解析模块20,用于解析所述开发工程,获取所述开发工程包含的业务代码;
代码提取模块30,用于基于预配置的语法特征识别所述业务代码,提取所述业务代码中的目标业务代码;所述目标业务代码包括SQL语句;
规则范本模块40,用于获取所述目标业务代码的分类类别,根据所述分类类别匹配风险语句范本;所述风险语句范本中包含SQL语句的形式及执行规则;
漏洞检测模块50,用于根据所述风险语句范本对所述SQL语句进行漏洞检测,从所述SQL语句中筛选不满足对应SQL语句的形式或执行规则的风险SQL语句;
漏洞确定模块60,用于根据所述风险SQL语句确定所述开发工程的SQL注入漏洞。
如上所述,可以理解地,本申请中提出的所述SQL注入漏洞的检测装置的各组成部分可以实现如上所述SQL注入漏洞的检测方法任一项的功能。
在一个实施例中,所述基于预配置的语法特征识别所述业务代码,提取所述业务代码中的目标业务代码,包括:
获取待检测的功能项目的第一业务代码;
根据所述功能项目从语法库中匹配对应的语法特征作为预配置的语法特征;
基于预配置的语法特征识别所述第一业务代码,提取所述第一业务代码中的目标业务代码。
在一个实施例中,所述获取待检测的功能项目的第一业务代码,包括:
获取所述开发工程包含的注释;
根据预设关键词从所述注释中进行匹配,确定匹配范围;
获取所述匹配范围内的待选业务代码,将所述待选代码配置为待检测的功能项目的第一业务代码。
在一个实施例中,所述根据所述风险语句范本对所述SQL语句进行漏洞检测,从所述SQL语句中筛选不满足对应SQL语句的形式及执行规则的风险SQL语句,包括:
检测所述SQL语句的形式与对应的标准形式的差异度是否大于预设值以及检测所述SQL语句缺少对应的执行权限条件;
若所述SQL语句的形式与对应的标准形式的差异度大于预设值,确定所述SQL语句为不满足对应SQL语句的形式要求的风险SQL语句;或
若所述SQL语句缺少对应的执行权限条件,确定所述SQL语句为不满足对应SQL语句的执行规则要求的风险SQL语句。
在一个实施例中,所述确定所述SQL语句为不满足对应SQL语句的形式要求的风险SQL语句之后,还包括:
根据不满足所述SQL语句的形式要求的风险SQL语句生成错误SQL语句,并将所述错误SQL语句关联所述形式要求后在对应的位置处区别显示;
所述确定所述SQL语句为不满足对应SQL语句的执行规则要求的风险SQL语句之后,还包括:
根据不满足所述SQL语句的执行规则要求的风险SQL语句生成异常SQL语句,并将所述异常SQL语句提交至相应的通知渠道以进行异常SQL语句屏蔽审核。
在一个实施例中,所述根据所述风险SQL语句确定所述开发工程的SQL注入漏洞之后,还包括:
获取所述风险SQL语句的替换样本;
根据所述替换样本替换所述开发工程中对应的所述风险SQL语句,生成目标开发工程;
将所述目标开发工程提交至测试服务。
在一个实施例中,所述解析所述开发工程,获取所述开发工程包含的业务代码,包括:
识别所述开发工程的数据格式;
根据所述数据格式匹配对应模板的解析脚本;
根据所述解析脚本解析所述开发工程,获取所述开发工程包含的业务代码。
参照图3,本申请实施例中还提供一种计算机设备,该计算机设备可以是移动终端,其内部结构可以如图3所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和显示装置及输入装置。其中,该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机设备的输入装置用于接收用户的输入。该计算机设计的处理器用于提供计算和控制能力。该计算机设备的存储器包括存储介质。该存储介质存储有操作系统、计算机程序和数据库。该计算机设备的数据库用于存放数据。该计算机程序被处理器执行时以实现一种SQL注入漏洞的检测方法。
上述处理器执行上述的SQL注入漏洞的检测方法,包括:获取开发工程;解析所述开发工程,获取所述开发工程包含的业务代码;基于预配置的语法特征识别所述业务代码,提取所述业务代码中的目标业务代码;所述目标业务代码包括SQL语句;获取所述目标业务代码的分类类别,根据所述分类类别匹配风险语句范本;所述风险语句范本中包含SQL语句的形式及执行规则;根据所述风险语句范本对所述SQL语句进行漏洞检测,从所述SQL语句中筛选不满足对应SQL语句的形式或执行规则的风险SQL语句;根据所述风险SQL语句确定所述开发工程的SQL注入漏洞。
所述计算机设备提供了一种检测开发工程中的SQL注入漏洞的方法,开发工程需要上线测试之前,需要对开发工程进行漏洞检测,首先获取开发工程所述开发工程为源代码工程,可以包括多种格式,然后解析所述开发工程,获取所述开发工程包含的业务代码,即获得开发工程中各个功能模块的业务代码,基于预配置的语法特征识别所述业务代码,提取所述业务代码中的目标业务代码;所述目标业务代码包括SQL语句,所述SQL语句执行时对数据库执行包括增删改查的操作,该些语句存在被注入的风险,获取所述目标业务代码的分类类别,根据所述分类类别匹配风险语句范本;所述风险语句范本中包含SQL语句的形式及执行规则,根据所述风险语句范本对所述SQL语句进行漏洞检测,从所述SQL语句中筛选不满足对应SQL语句的形式或执行规则的风险SQL语句,当SQL语句的形式不满足所述风险语句范本的形式要求或所述SQL语句的执行逻辑不满足所述执行规则时,确定所述SQL语句不满足对应SQL语句的形式及执行规则,根据所述风险SQL语句确定所述开发工程的SQL注入漏洞,从而输出开发工程的SQL注入漏洞,提高对开发工程的SQL注入漏洞的检测效率,以及方便对开发工程进行修改,提高开发工程的维护效率。
本申请一实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被所述处理器执行时实现一种SQL注入漏洞的检测方法,包括步骤:获取开发工程;解析所述开发工程,获取所述开发工程包含的业务代码;基于预配置的语法特征识别所述业务代码,提取所述业务代码中的目标业务代码;所述目标业务代码包括SQL语句;获取所述目标业务代码的分类类别,根据所述分类类别匹配风险语句范本;所述风险语句范本中包含SQL语句的形式及执行规则;根据所述风险语句范本对所述SQL语句进行漏洞检测,从所述SQL语句中筛选不满足对应SQL语句的形式或执行规则的风险SQL语句;根据所述风险SQL语句确定所述开发工程的SQL注入漏洞。
所述计算机可读存储介质提供了一种检测开发工程中的SQL注入漏洞的方法,开发工程需要上线测试之前,需要对开发工程进行漏洞检测,首先获取开发工程所述开发工程为源代码工程,可以包括多种格式,然后解析所述开发工程,获取所述开发工程包含的业务代码,即获得开发工程中各个功能模块的业务代码,基于预配置的语法特征识别所述业务代码,提取所述业务代码中的目标业务代码;所述目标业务代码包括SQL语句,所述SQL语句执行时对数据库执行包括增删改查的操作,该些语句存在被注入的风险,获取所述目标业务代码的分类类别,根据所述分类类别匹配风险语句范本;所述风险语句范本中包含SQL语句的形式及执行规则,根据所述风险语句范本对所述SQL语句进行漏洞检测,从所述SQL语句中筛选不满足对应SQL语句的形式或执行规则的风险SQL语句,当SQL语句的形式不满足所述风险语句范本的形式要求或所述SQL语句的执行逻辑不满足所述执行规则时,确定所述SQL语句不满足对应SQL语句的形式及执行规则,根据所述风险SQL语句确定所述开发工程的SQL注入漏洞,从而输出开发工程的SQL注入漏洞,提高对开发工程的SQL注入漏洞的检测效率,以及方便对开发工程进行修改,提高开发工程的维护效率。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。
本申请所提供的和实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。
非易失性存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双速据率SDRAM(SSRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
以上所述仅为本申请的优选实施例,并非因此限制本申请的专利范围。
凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
Claims (10)
1.一种SQL注入漏洞的检测方法,其特征在于,包括:
获取开发工程;
解析所述开发工程,获取所述开发工程包含的业务代码;
基于预配置的语法特征识别所述业务代码,提取所述业务代码中的目标业务代码;所述目标业务代码包括SQL语句;
获取所述目标业务代码的分类类别,根据所述分类类别匹配风险语句范本;所述风险语句范本中包含SQL语句的形式及执行规则;
根据所述风险语句范本对所述SQL语句进行漏洞检测,从所述SQL语句中筛选不满足对应SQL语句的形式或执行规则的风险SQL语句;
根据所述风险SQL语句确定所述开发工程的SQL注入漏洞。
2.根据权利要求1所述的SQL注入漏洞的检测方法,其特征在于,所述基于预配置的语法特征识别所述业务代码,提取所述业务代码中的目标业务代码,包括:
获取待检测的功能项目的第一业务代码;
根据所述功能项目从语法库中匹配对应的语法特征作为预配置的语法特征;
基于预配置的语法特征识别所述第一业务代码,提取所述第一业务代码中的目标业务代码。
3.根据权利要求2所述的SQL注入漏洞的检测方法,其特征在于,所述获取待检测的功能项目的第一业务代码,包括:
获取所述开发工程包含的注释;
根据预设关键词从所述注释中进行匹配,确定匹配范围;
获取所述匹配范围内的待选业务代码,将所述待选代码配置为待检测的功能项目的第一业务代码。
4.根据权利要求1所述的SQL注入漏洞的检测方法,其特征在于,所述根据所述风险语句范本对所述SQL语句进行漏洞检测,从所述SQL语句中筛选不满足对应SQL语句的形式及执行规则的风险SQL语句,包括:
检测所述SQL语句的形式与对应的标准形式的差异度是否大于预设值以及检测所述SQL语句缺少对应的执行权限条件;
若所述SQL语句的形式与对应的标准形式的差异度大于预设值,确定所述SQL语句为不满足对应SQL语句的形式要求的风险SQL语句;或
若所述SQL语句缺少对应的执行权限条件,确定所述SQL语句为不满足对应SQL语句的执行规则要求的风险SQL语句。
5.根据权利要求4所述的SQL注入漏洞的检测方法,其特征在于,所述确定所述SQL语句为不满足对应SQL语句的形式要求的风险SQL语句之后,还包括:
根据不满足所述SQL语句的形式要求的风险SQL语句生成错误SQL语句,并将所述错误SQL语句关联所述形式要求后在对应的位置处区别显示;
所述确定所述SQL语句为不满足对应SQL语句的执行规则要求的风险SQL语句之后,还包括:
根据不满足所述SQL语句的执行规则要求的风险SQL语句生成异常SQL语句,并将所述异常SQL语句提交至相应的通知渠道以进行异常SQL语句屏蔽审核。
6.根据权利要1所述的SQL注入漏洞的检测方法,其特征在于,所述根据所述风险SQL语句确定所述开发工程的SQL注入漏洞之后,还包括:
获取所述风险SQL语句的替换样本;
根据所述替换样本替换所述开发工程中对应的所述风险SQL语句,生成目标开发工程;
将所述目标开发工程提交至测试服务。
7.根据权利要求1所述的SQL注入漏洞的检测方法,其特征在于,所述解析所述开发工程,获取所述开发工程包含的业务代码,包括:
识别所述开发工程的数据格式;
根据所述数据格式匹配对应模板的解析脚本;
根据所述解析脚本解析所述开发工程,获取所述开发工程包含的业务代码。
8.一种SQL注入漏洞的检测装置,其特征在于,包括:
数据获取模块,用于获取开发工程;
工程解析模块,用于解析所述开发工程,获取所述开发工程包含的业务代码;
代码提取模块,用于基于预配置的语法特征识别所述业务代码,提取所述业务代码中的目标业务代码;所述目标业务代码包括SQL语句;
规则范本模块,用于获取所述目标业务代码的分类类别,根据所述分类类别匹配风险语句范本;所述风险语句范本中包含SQL语句的形式及执行规则;
漏洞检测模块,用于根据所述风险语句范本对所述SQL语句进行漏洞检测,从所述SQL语句中筛选不满足对应SQL语句的形式或执行规则的风险SQL语句;
漏洞确定模块,用于根据所述风险SQL语句确定所述开发工程的SQL注入漏洞。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述SQL注入漏洞的检测方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述SQL注入漏洞的检测方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111266341.XA CN113987511A (zh) | 2021-10-28 | 2021-10-28 | Sql注入漏洞的检测方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111266341.XA CN113987511A (zh) | 2021-10-28 | 2021-10-28 | Sql注入漏洞的检测方法、装置、计算机设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113987511A true CN113987511A (zh) | 2022-01-28 |
Family
ID=79743840
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111266341.XA Pending CN113987511A (zh) | 2021-10-28 | 2021-10-28 | Sql注入漏洞的检测方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113987511A (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104361035A (zh) * | 2014-10-27 | 2015-02-18 | 深信服网络科技(深圳)有限公司 | 检测数据库篡改行为的方法及装置 |
CN107292170A (zh) * | 2016-04-05 | 2017-10-24 | 阿里巴巴集团控股有限公司 | Sql注入攻击的检测方法及装置、系统 |
CN110059480A (zh) * | 2019-03-13 | 2019-07-26 | 深圳壹账通智能科技有限公司 | 网络攻击行为监控方法、装置、计算机设备及存储介质 |
CN110287102A (zh) * | 2019-05-22 | 2019-09-27 | 深圳壹账通智能科技有限公司 | 核心数据检测处理方法、装置、计算机设备及存储介质 |
CN110889118A (zh) * | 2018-09-07 | 2020-03-17 | 广州视源电子科技股份有限公司 | 异常sql语句检测方法、装置、计算机设备和存储介质 |
CN112395305A (zh) * | 2020-11-11 | 2021-02-23 | 中国人寿保险股份有限公司 | 一种sql语句分析方法、装置、电子设备及存储介质 |
CN112398861A (zh) * | 2020-11-18 | 2021-02-23 | 国网电力科学研究院武汉能效测评有限公司 | web组态化系统中敏感数据的加密系统及方法 |
CN112925720A (zh) * | 2021-03-29 | 2021-06-08 | 中国建设银行股份有限公司 | 一种软件sql测试方法、装置、存储介质及系统 |
-
2021
- 2021-10-28 CN CN202111266341.XA patent/CN113987511A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104361035A (zh) * | 2014-10-27 | 2015-02-18 | 深信服网络科技(深圳)有限公司 | 检测数据库篡改行为的方法及装置 |
CN107292170A (zh) * | 2016-04-05 | 2017-10-24 | 阿里巴巴集团控股有限公司 | Sql注入攻击的检测方法及装置、系统 |
CN110889118A (zh) * | 2018-09-07 | 2020-03-17 | 广州视源电子科技股份有限公司 | 异常sql语句检测方法、装置、计算机设备和存储介质 |
CN110059480A (zh) * | 2019-03-13 | 2019-07-26 | 深圳壹账通智能科技有限公司 | 网络攻击行为监控方法、装置、计算机设备及存储介质 |
CN110287102A (zh) * | 2019-05-22 | 2019-09-27 | 深圳壹账通智能科技有限公司 | 核心数据检测处理方法、装置、计算机设备及存储介质 |
CN112395305A (zh) * | 2020-11-11 | 2021-02-23 | 中国人寿保险股份有限公司 | 一种sql语句分析方法、装置、电子设备及存储介质 |
CN112398861A (zh) * | 2020-11-18 | 2021-02-23 | 国网电力科学研究院武汉能效测评有限公司 | web组态化系统中敏感数据的加密系统及方法 |
CN112925720A (zh) * | 2021-03-29 | 2021-06-08 | 中国建设银行股份有限公司 | 一种软件sql测试方法、装置、存储介质及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108614707B (zh) | 静态代码检查方法、装置、存储介质和计算机设备 | |
CN111240994B (zh) | 漏洞处理方法、装置、电子设备及可读存储介质 | |
US9880832B2 (en) | Software patch evaluator | |
CN111459495B (zh) | 单元测试代码文件生成方法、电子装置及存储介质 | |
CN107045477B (zh) | 一种可进行多维度检测的质量评估平台 | |
CN113282513B (zh) | 接口测试案例的生成方法、装置、计算机设备及存储介质 | |
US11237943B2 (en) | Generating inputs for computer-program testing | |
Zhong et al. | An empirical study on API parameter rules | |
CN112988595A (zh) | 动态同步测试方法、装置、设备及存储介质 | |
CN110543422A (zh) | 一种用于fpr的软件包代码缺陷数据处理方法、系统及介质 | |
CN113656404A (zh) | 数据校验方法、装置、计算机设备及存储介质 | |
CN113434395A (zh) | 测试用例的自动化生成方法、装置、设备及介质 | |
CN113900962B (zh) | 代码差异检测方法及装置 | |
CN115391230A (zh) | 一种测试脚本生成、渗透测试方法、装置、设备及介质 | |
CN111324375A (zh) | 代码管理方法、装置、计算机设备和存储介质 | |
CN111191443A (zh) | 基于区块链的敏感词检测方法、装置、计算机设备和存储介质 | |
CN113778852A (zh) | 一种基于正则表达式的代码分析方法 | |
JP2012181666A (ja) | 情報処理装置、情報処理方法及び情報処理プログラム | |
CN113987511A (zh) | Sql注入漏洞的检测方法、装置、计算机设备及存储介质 | |
CN111881055B (zh) | 军用软件评测规范的Simulink模型设计方法 | |
Zhang et al. | Discovering API directives from API specifications with text classification | |
CN113110952A (zh) | 获取应用程序中的sdk异常信息的方法和装置 | |
CN112948478A (zh) | 基于链路的代码分析方法、装置、电子设备及存储介质 | |
CN114157439A (zh) | 漏洞扫描方法、计算设备及记录介质 | |
Korsman et al. | A tool for analysing higher-order feature interactions in preprocessor annotations in C and C++ projects |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |