一种SQL注入测试覆盖率统计方法及系统与流程

文档序号:15999070发布日期:2018-11-20 19:13阅读:239来源:国知局

本发明涉及SQL注入测试技术领域,特别是涉及一种SQL注入测试覆盖率统计方法及系统。



背景技术:

SQL注入是针对Web服务的一种常见的攻击方法,通过使用SQL命令来非法操纵Web服务器上的数据库来执行的。具体来说,它是利用Web应用程序将恶意的SQL命令注入到后台数据库引擎执行的能力,通过在Web表单中输入恶意SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照开发者的意图去执行SQL语句。在历年权威统计的Web安全漏洞中,SQL注入漏洞均名列前茅,具有重大的危害,于是对Web应用进行SQL注入检测也变得十分重要及必要。

现有技术中,SQL注入测试均通过测试工具完成,测试向待测试Web应用发送测试请求,并将每个请求的测试结果进行反馈,即测试通过与未通过,最后根据所发送的测试请求的反馈结果来判定该Web的安全性能。

然而,现有技术中只是根据已经发送的测试请求的测试结果来判定Web应用的安全性能,对于一个Web应用程序而言具有很多URL、请求以及参数,对应的也有多种测试请求,对于测试工具发送的测试请求占全部请求的比例不得而知,影响了SQL注入测试的可靠性。



技术实现要素:

本发明实施例中提供了一种SQL注入测试覆盖率统计方法,以解决现有技术中SQL注入测试可靠性低的问题。

为了解决上述技术问题,本发明实施例公开了如下技术方案:

本发明第一方面提供了一种SQL注入测试覆盖率统计方法,包括:

获取待测试URL、待测试请求以及待测试参数;

根据所述待测试URL、待测试请求以及待测试参数建立比对数据库;

获取测试URL、测试请求以及测试参数;

用所述测试URL、测试请求以及测试参数与所述比对数据库进行比对;

对所述比对数据库中比对相同结果进行标记;

根据测试结束后所述比对数据库中的标记数据个数以及总数据个数确定测试覆盖率。

优选地,获取待测试URL、待测试请求以及待测试参数具体包括:

对Web应用全部数据进行抓取,生成文本文件;

对所述文本文件进行无效信息过滤获得URL数据、请求数据以及参数数据。

优选地,获取待测试URL、待测试请求以及待测试参数还包括:

获取Web应用开发过程的全部URL、请求以及参数。

优选地,根据所述待测试URL、待测试请求以及待测试参数建立比对数据库具体包括:

将所述待测试参数划分至每个待测试请求;

将所述待测试请求划分至每个待测试URL;

以每条数据中依次包括URL、请求以及参数的格式建立数据表。

优选地,每条数据还包括测试状态以及测试结果。

优选地,用所述测试URL、测试请求以及测试参数与所述比对数据库进行比对具体包括:

用所述测试URL与待测试URL进行比对;

在相同URL下用所述测试请求与待测试请求进行比对;

在相同请求下用所述测试参数与待测试参数进行比对。

优选地,用所述测试URL、测试请求以及测试参数与所述比对数据库进行比之后还包括:当不存在与所述测试URL相同的数据时,在所述比对数据库中新增所述测试URL,并将所述测试URL对应的测试请求以及测试参数添加至新增URL下;

当不存在与所述测试请求相同的数据时,在所述比对数据库中相同URL下新增所述测试请求,并将所述测试请求对应的测试参数添加至新增请求下;

当不存在与所述测试参数相同的数据时,在所述比对数据库中相同请求下新增所述测试参数。

优选地,用所述测试URL、测试请求以及测试参数与所述比对数据库进行比之后还包括:将新增数据后的数据库作为比对数据库。

优选地,所述方法还包括:

根据所述覆盖率确定测试结果可靠等级。

本发明第二方面提供了一种SQL注入测试覆盖率统计系统,包括:测试数据采集模块和Web数据采集模块,所述测试数据采集模块和Web数据采集模块分别与数据处理模块连接,所述Web数据采集模块与所述数据处理模块之间设置有信息过滤模块,其中,所述测试数据采集模块用于采集测试工具的测试数据,所述Web数据采集模块用于采集Web应用数据,所述信息过滤模块用于对采集的Web应用数据进行过滤,所述数据处理模块用于创建比对数据库并进行数据比对。

由以上技术方案可见,本发明中从Web应用中获取待测试的URL、请求以及参数,并建立比对数据库作为实际测试项的比对标准,然后获取测试工具中实际测试使用的URL、请求以及参数,并与比对数据库中的数据进行比较,并对比对相同的数据进行标记,对于比对数据库中比对不到的测试数据可以进行添加,最后通过比对数据库中的进行标记的数据个数以及数据总个数计算测试覆盖率,根据测试覆盖率的值确定此次测试的可靠等级,从而提高测试可靠性。

附图说明

了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种SQL注入测试覆盖率统计方法的流程示意图;

图2为本发明实施例提供的另一种SQL注入测试覆盖率统计方法的流程示意图;

图3为本发明实施例提供的一种SQL注入测试覆盖率统计系统的结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

参见图1,为本发明实施例提供的一种SQL注入测试覆盖率统计方法的流程示意图,如图1所示,本发明实施例提供的SQL注入测试覆盖率统计方法,包括:

S10:获取待测试URL、待测试请求以及待测试参数。

获取待测试URL、待测试请求以及待测试参数的方法分为两种,一种是通过代理工具获取,另一种是在Web开发阶段获取。对于通过代理工具获取具体包括:

对Web应用全部数据进行抓取,生成文本文件;

对所述文本文件进行无效信息过滤获得URL数据、请求数据以及参数数据。

对于通过代理工具从Web上获取的数据,因为在抓取的过程中会包括js以及图片等无效信息,因此对于生成的文本文件需要进行无效信息过滤,保证文本文件中的数据只包括URL数据、请求数据以及参数数据。对于在开发阶段获取的数据即开发人员在开发的过程中涉及到的URL、请求以及参数。

S20:根据所述待测试URL、待测试请求以及待测试参数建立比对数据库。

从Web上获取到的URL、请求以及参数是以文本文件的形式保存的,在保存上即没有条理也不能直接调用或修改,因此,需要将这些数据以系统的格式进行保存,且满足内对其内容进行修改操作。因为SQL注入测试的每个测试请求是针对某个URL下的某种请求的参数发送的,因此,需要现对待测试参数进行分类,将每个参数分配至对应的请求之下,再将每个请求分配至对应的URL之下,这样就可以保证保存的每条数据中都包括URL、请求以及参数(对于没有参数的请求,参数可以设置为空白)。

S30:获取测试URL、测试请求以及测试参数。

比对数据库构建完毕之后测试项的比对标准就建立完毕了,此时开始对Web进行SQL注入测试,获取注入测试测试结果中的URL、请求以及参数。

S40:用所述测试URL、测试请求以及测试参数与所述比对数据库进行比对。

通过用获取的测试结果中的URL、请求以及参数与比对数据库中的URL、请求以及参数进行比对,可以确定该测试用URL、请求以及参数是否涵盖在比对数据库中,鉴于SQL注入测试数据的格式,在进行数据比对时先用所述测试URL与待测试URL进行比对,确定相同的URL,然后在相同的URL下所述测试请求与待测试请求进行比对,最后在相同请求下用所述测试参数与待测试参数进行比对,从而确定比对数据库中是否保存有与该条测试数据相同的数据,需要说明的是,对于没有参数的请求而言,在进行参数比对时,如果测试用数据中与比对数据库中该参数项均为空白,则说明进行比对的两条数据相同,如果进行比对的两条数据中其中一项参数有数值,另一项为空白,则属于比对数据库中不存在该数据的情况。

因为步骤S10中获取的数据是通过一定条件自行获取的,不能够保证所有的测试项均包括在内即比对数据库中不存在比对数据的情况,因此,在URL的比对过程中,当不存在与所述测试URL相同的数据时,需要将测试URL新增在比对数据库,因为URL不存在,则对应的请求以及参数也一定不存在,因此还需要将该测试URL对应的测试请求以及测试参数添加至新增URL下;比对过程中如果URL存在,则继续进行请求的比对,当请比对过程中,比对数据库中不存在与所述测试请求相同的数据时,则需要将该请求以及该请求对应的参数新增在比对数据库相同URL下;在参数比对过程中,当比对数据库中不存在与所述测试参数相同的数据时,则需要将该请求新增在对应的请求之下,对于参数为空白的情况,则需要新增一条参数为空白的请求数据。需要说明的是,在新增数据时,需要将该新增数据以完整形式增加,即需要完整包括URL、请求以及参数3项。

因为比对数据库中新增的数据,原比对数据库以不能完整的覆盖SQL测试的测试项,因此用新增数据后的数据库作为比对数据库,即实现比对数据库的自更新,保证比对数据路中的数据能够尽可能多的覆盖SQL测试的测试项。

S50:对所述比对数据库中比对相同结果进行标记。

对于比对过程中相同的数据需要在比对数据库中进行标记,以表明该项已被测试,对弈新增的数据,在新增之后自动认为已被测试。

S60:根据测试结束后所述比对数据库中的标记数据个数以及总数据个数确定测试覆盖率。

测试结束之后数据库中的数据已经根据与测试数据的比对结果进行了标记,通过统计标记数据个数以及比对数据库中的数据总个数,将两者做除法计算覆盖率,对于未标记的数据即为未测试项,用户可以自行在进行手动测试,以达到SQL注入测试全覆盖,提高测试准确性。

因为需要对比对数据库中每条数据是否已被测试,即对相同数据进行标记,每条数据还包括测试状态,在比对数据库建立时,每条数据的测试状态均为为测试,当有相同的测试项与其进行比对后则修改为已测试。

本发明实施例提供的比对数据库中通是也可以显示该条测试项的测试结果,因此还为每条数据设置了测试结果,在比对数据库建立时,每条数据的测试结果均为空白,在测试之后将测试工具的测试结果填入,可以直接通过读取比对数据库中的测试结果进行结果分析。

参见图2,为本发明实施例提供的另一种SQL注入测试覆盖率统计方法的流程示意图,如图2所示,本发明实施例提供的SQL注入测试覆盖率统计方法还包括:

S70:根据所述覆盖率确定测试结果可靠等级。

本发明实施例还可以对SQL测试工具的测试性能进行评估,其评估结果通过覆盖率来确定,例如,当测试覆盖率为100%时,可以认为此次测试完全可靠,该测试工具的测试性能也为极度可靠,对于,测试覆盖率在90%-99%之间的情况,可以认为此次测试相对可靠,以及该测试工具的测试性能也为相对可靠,具体的覆盖率对应的等级用户可以自行设定。

参见图3,为本发明实施例提供的一种SQL注入测试覆盖率统计系统的结构示意图,如图3所示,本发明实施例提供的SQL注入测试覆盖率统计系统,包括:测试数据采集模块、Web数据采集模块、数据处理模块以及信息过滤模块。

所述测试数据采集模块和Web数据采集模块分别与数据处理模块连接,所述Web数据采集模块与所述数据处理模块之间设置有信息过滤模块,其中,所述测试数据采集模块用于采集测试工具的测试数据,所述Web数据采集模块用于采集Web应用数据,所述信息过滤模块用于对采集的Web应用数据进行过滤,所述数据处理模块用于创建比对数据库并进行数据比对。

本发明中从Web应用中获取待测试的URL、请求以及参数,并建立比对数据库作为实际测试项的比对标准,然后获取测试工具中实际测试使用的URL、请求以及参数,并与比对数据库中的数据进行比较,并对比对相同的数据进行标记,对于比对数据库中比对不到的测试数据可以进行添加,最后通过比对数据库中的进行标记的数据个数以及数据总个数计算测试覆盖率,根据测试覆盖率的值确定此次测试的可靠等级,从而提高测试可靠性。

以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1