应用程序的测试方法、系统及装置与流程

文档序号:22736370发布日期:2020-10-31 09:14阅读:104来源:国知局
应用程序的测试方法、系统及装置与流程

本发明涉及信息安全的测试技术领域,具体涉及一种应用程序的测试方法、系统及装置。



背景技术:

目前,随着科技的发展以及人们需求的扩展,应用程序越来越多,然而应用程序不可避免地会产生漏洞,可以通过对应用程序进行测试以检测是否存在漏洞。

然而,现有技术中对应用程序进行测试时会使测试时用到的数据写入应用程序的存储区,不仅占用空间,还会影响存储区原有的数据,并影响除漏洞测试外的其他的检测的正常运行。



技术实现要素:

鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的应用程序的测试方法、系统及装置。

根据本发明的第一个方面,提供了一种应用程序的测试方法,包括:生成具有测试标识的测试信息,所述测试标识用于在被所述应用程序识别到时,禁止所述应用程序保存所述测试信息;向所述应用程序发送所述测试信息,使所述应用程序识别所述测试标识,并根据所述测试信息进行漏洞检测。

可选地,生成具有测试标识的测试信息包括:获取所述应用程序的资产数据;将所述资产数据代入数据库,以生成与所述资产数据对应的所述测试信息,其中,所述数据库内预存有不同的资产数据与不同的测试信息间的对应关系。

可选地,所述资产数据包括所述应用程序的业务报文、所使用的第三方框架、所部署的容器以及所部署的中间件中至少一种。

可选地,所述测试方法还包括:在所述应用程序识别到所述测试标识后,将所述测试标识存入所述应用程序的http请求入口函数的线程共享变量中。

可选地,所述测试方法还包括:判断所述应用程序的漏洞检测函数是否会在未经安全处理的用户命令下执行;若所述漏洞检测函数会在未经安全处理的用户命令下执行,则发出输出警告的信号。

可选地,所述漏洞检测函数包括数据库操作代码、命令执行函数、文件读写函数、表达式执行函数以及反序列函数中至少一种。

可选地,所述安全处理包括过滤以及转义中至少一种。

可选地,所述未经安全处理的用户命令包括:从所述应用程序的http请求入口函数到执行之间的过程未经所述安全处理的用户命令。

根据本发明的第二个方面,还提供了一种应用程序的测试系统,包括计算机可读存储介质、处理器和存储在所述计算机可读存储介质上并可在所述处理器上运行的程序,所述程序被所述处理器执行时实现上述任一所述的测试方法。

根据本发明的第三个方面,还提供了一种应用程序的测试装置,包括:生成模块,用于生成具有测试标识的测试信息,所述测试标识用于在被所述应用程序识别到时,禁止所述应用程序保存所述测试信息;测试模块,用于向所述应用程序发送所述测试信息,使所述应用程序识别所述测试标识,并根据所述测试信息进行漏洞检测。

本发明实施例提供的这种应用程序的测试方法、测试系统及测试装置能在自动完成对漏洞的测试的同时,有效区分对漏洞的测试的数据与其他检测的数据,保证对漏洞的测试产生的数据不会真正进入被测应用程序的数据库、文件等数据存储区,能保证对漏洞的测试数据不影响除漏洞测试以外的其他检测的状态与结果,并且不会占用应用程序的空间,也不会影响应用程序的存储区原有的数据。这种应用程序的测试方法、测试系统及测试装置可以减少人工参与,可以自动对应用程序的安全漏洞进行检测。

附图说明

通过下文中参照附图对本发明所作的描述,本发明的其它目的和优点将显而易见,并可帮助对本发明有全面的理解。

图1是根据本发明一个实施例的应用程序的测试方法的示意图;

图2是根据本发明一个实施例的应用程序的测试方法的应用场景图;

图3是根据本发明一个实施例的应用程序的测试方法的执行流程图;

图4是根据本发明一个实施例的应用程序的测试系统的结构框图;

图5是根据本发明一个实施例的应用程序的测试装置的结构框图。

应该注意的是,附图并未按比例绘制,并且出于说明目的,在整个附图中类似结构或功能的元素通常用类似的附图标记来表示。还应该注意的是,附图只是为了便于描述优选实施例,而不是发明本身。附图没有示出所描述的实施例的每个方面,并且不限制本发明的范围。

其中,10为应用程序的测试系统,100为计算机可读存储介质,110为程序,200为处理器,20为应用程序的测试装置,300为生成模块,400为测试模块。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例的附图,对本发明的技术方案进行清楚、完整地描述。显然,所描述的实施例是本发明的一个实施例,而不是全部的实施例。基于所描述的本发明的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

除非另外定义,本发明使用的技术术语或者科学术语应当为本发明所属领域内具有一般技能的人士所理解的通常意义。

本发明的实施例首先提供了一种应用程序的测试方法,图1是根据本发明一个实施例的应用程序的测试方法的示意图,图2是根据本发明一个实施例的应用程序的测试方法的应用场景图。如图1所示,本发明的实施例的应用程序的测试方法包括:

s102,生成具有测试标识的测试信息,所述测试标识用于在被所述应用程序识别到时,禁止所述应用程序保存所述测试信息。

s104,向所述应用程序发送所述测试信息,使所述应用程序识别所述测试标识,并根据所述测试信息进行漏洞检测。

如图2所示,其中,应用程序可以是智能终端上的应用程序,例如,手机、平板上的应用程序。且本领域的技术人员可以理解地,向所述应用程序发送所述测试信息并不表示所述应用程序的所有函数都会收到该测试信息,可以以随机的方式向应用程序的所有函数发送该测试信息。

本发明的实施例提供的这种应用程序的测试方法能在自动完成对漏洞的测试的同时,有效区分对漏洞的测试的数据与其他检测的数据,保证对漏洞的测试产生的数据不会真正进入被测应用程序的数据库、文件等数据存储区,能保证对漏洞的测试数据不影响除漏洞测试以外的其他检测的状态与结果,并且不会占用应用程序的空间,也不会影响应用程序的存储区原有的数据。这种应用程序的测试方法、测试系统及测试装置可以减少人工参与,可以自动对应用程序的安全漏洞进行检测。

生成具有测试标识的测试信息可以包括:获取所述应用程序的资产数据;将所述资产数据代入数据库,以生成与所述资产数据对应的所述测试信息,其中,所述数据库内预存有不同的资产数据与不同的测试信息间的对应关系。

本领域技术人员可以理解地,数据库内预存的不同的资产数据与不同的测试信息间的对应关系可以根据应用程序历史曾经出现过的漏洞问题生成,例如,当历史数据表示第一种资产数据容易产生第一漏洞问题,则与第一种资产数据对应的第一种测试信息就表示对第一漏洞问题检测的信息,当历史数据表示第二种资产数据容易产生第二漏洞问题,则与第二种资产数据对应的第二种测试信息就表示对第二漏洞问题检测的信息等,由此,则可以建立数据库内的不同的资产数据与不同的测试信息间的对应关系。这种方法通过大数据的方式可以有效地、针对性地确定测试信息,从而提高测试的效率,以提升用户体验。

其中,所述资产数据包括所述应用程序的业务报文、所使用的第三方框架、所部署的容器以及所部署的中间件中至少一种。

具体地,可以通过获取应用程序的域名、登陆账号等信息,通过对应用程序进行模拟人工点击,从而获得应用程序的页面的访问流量,从而获得应用程序对应的业务请求报文、所使用的第三方框架、所部署的中间件等相关信息。还可以通过下载应用程序对应的流量日志,从而获取应用程序的全量业务报文。还可以在应用程序对应的浏览器或者客户端上,配置代理转发地址,将业务流量转发至中间人代理服务器,由中间人代理服务器基于获取到的业务请求整理应用程序的资产数据。

所述测试方法还可以包括在所述应用程序识别到所述测试标识后,将所述测试标识存入所述应用程序的http请求入口函数的线程共享变量中。

具体地,在http请求入口函数中,获取测试信息对应的请求对象,将对象值(url、body、header等)存入线程共享变量,以便线程共享变量中后续的操作函数能实时获取该对象值判断测试信息的来源及测试信息的详细信息。并基于拦截代码和线程共享变量中存入的对象值,判断该线程共享变量对应的操作是否来源于测试信息。将所述测试信息代入所述测试函数,测试标识被放入线程共享变量,存储函数在执行时,调用拦截代码,获取对应线程共享变量的测试标识,拦截代码用于在所述识别代码识别到所述测试标识时,禁止所述应用程序保存所述测试信息。以使得与所述应用程序的http请求入口函数具有共享的线程的其他函数可以查看该测试标识,便于这些函数执行时使得应用程序保存测试信息的情况发生。

在本发明的一些实施例中,测试方法还可以包括:判断所述应用程序的漏洞检测函数是否会在未经安全处理的用户命令下执行。

若所述漏洞检测函数会在未经安全处理的用户命令下执行,则发出输出警告的信号。具体地,输出警告的信号可以被发送至各种输出装置,并可以以各种方式输出,例如,在本发明的一些实施例中,输出装置可以为音频装置,则信号可以为音频信号,在本发明的另一些实施例中,输出装置可以为显示器,则信号可以为文字信号等,这种输出警告的信号的输出方式容易引起测试人员的注意,从而提升测试人员的体验。

若所述漏洞检测函数不会在未经安全处理的用户命令下执行,则不发出输出警告的信号或发出输出表示应用程序正常的信号。

在本发明的一些实施例中,所述漏洞检测函数包括数据库操作代码、命令执行函数、文件读写函数、表达式执行函数以及反序列函数中至少一种。例如,在本发明的一些实施例中,所述漏洞检测函数仅包括数据库操作代码、命令执行函数、文件读写函数、表达式执行函数以及反序列函数中一种,在本发明的另一些实施例中,所述漏洞检测函数包括数据库操作代码、命令执行函数、文件读写函数、表达式执行函数以及反序列函数中两种或更多种等。并且,安全处理也可以包括过滤以及转义中的至少一种。

具体地,在漏洞检测函数中加入堆栈获取函数,判断漏洞检测函数在执行前是否经过了数据清洗类函数,例如对数据进行过滤、转义等操作的函数,通过获取到的漏洞检测函数对应的代码执行堆栈以及函数入参等相关信息,同时获取在线程共享变量中存入的上述对象值,进而判断是否所述检测代码的检测结果为所述漏洞检测函数会在未经所述安全处理的情况下执行。

在本发明的一些实施例中,在将所述测试信息代入所述应用程序的漏洞检测函数以及所述测试函数前还包括:在所述漏洞检测函数中插入函数入参值判断代码,所述函数入参值判断代码用于判断所述应用程序的漏洞检测函数是否会在未经安全处理的用户命令下执行。

图3是根据本发明一个实施例的应用程序的测试方法的执行流程图,如图3所示,本发明的实施例的应用程序的测试方法包括:

s302,获取所述应用程序的资产数据。

s304,将所述资产数据代入数据库,以生成与所述资产数据对应的所述测试信息。其中,所述数据库内预存有不同的资产数据与不同的测试信息间的对应关系。

s306,生成具有测试标识的测试信息,禁止所述应用程序保存所述测试信息。具体地,本领域技术人员可以理解地,生成的该测试信息不仅具有测试标识,还是与获取到的资产数据在数据库具有对应关系的测试信息。

s308,向所述应用程序发送所述测试信息,使所述应用程序识别所述测试标识,并根据所述测试信息进行漏洞检测。

s310,判断所述应用程序的漏洞检测函数是否会在未经安全处理的用户命令下执行。若判断的结果为所述应用程序的漏洞检测函数会在未经安全处理的用户命令下执行,则执行步骤s312。若判断的结果为所述应用程序的漏洞检测函数不会在未经安全处理的用户命令下执行,在本发明的一些实施例中,则可以不发出输出警告的信号,在本发明的另一些实施例中,可以发出输出表示应用程序正常的信号。

s312,发出输出警告的信号。

本发明的实施例还提供了一种应用程序的测试系统10,图4是根据本发明一个实施例的应用程序的测试系统10的结构框图。应用程序的测试系统10包括计算机可读存储介质100、处理器200和存储在所述计算机可读存储介质100上并可在所述处理器200上运行的程序110,所述程序110被所述处理器200执行时实现上述任一所述的测试方法。

其中计算机可读存储介质也可以被称为存储器。处理器200可以根据存储在只读存储器(rom)中的程序或者加载到随机访问存储器(ram)中的程序110而执行各种适当的动作和处理。处理器200例如可以包括通用微处理器(例如cpu)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(asic)),等等。处理器200还可以包括用于缓存用途的板载存储器。处理器200可以包括用于执行根据本公开的实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。

在ram中,存储有应用程序的测试系统10操作所需的各种程序110和数据。处理器200、rom以及ram通过总线彼此相连。处理器200通过执行rom和/或ram中的程序110来执行根据本公开的实施例的方法流程的各种操作。需要注意,程序110也可以存储在除rom和ram以外的一个或多个存储器中。处理器200也可以通过执行存储在所述一个或多个存储器中的程序110来执行根据本公开的实施例的方法流程的各种操作。

根据本公开的实施例,应用程序的测试系统10还可以包括输入/输出(i/o)接口,输入/输出(i/o)接口也连接至总线。应用程序的测试系统10还可以包括连接至i/o接口的以下部件中的一项或多项:包括键盘、鼠标等的输入部分;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分;包括硬盘等的存储部分;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分。通信部分经由诸如因特网的网络执行通信处理。驱动器也根据需要连接至i/o接口。可拆卸介质,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器上,以便于从其上读出的计算机程序根据需要被安装入存储部分。

根据本公开的实施例,根据本公开的实施例的方法流程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读存储介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分从网络上被下载和安装,和/或从可拆卸介质被安装。在该计算机程序被处理器200执行时,执行本公开实施例的系统中限定的上述功能。

本领域技术人员可以理解地,计算机可读存储介质100可以包括但不限于非易失性或易失性存储介质,例如随机存取存储器(ram)、静态ram、动态ram、只读存储器(rom)、可编程rom、可擦除可编程rom、电可擦除可编程rom、闪存、安全数字(sd)卡等。

本发明的实施例还提供了一种应用程序的测试装置20,图5是根据本发明一个实施例的应用程序的测试装置20的结构框图。应用程序的测试装置20包括生成模块300以及测试模块400。生成模块300用于生成具有测试标识的测试信息,所述测试标识用于在被所述应用程序识别到时,禁止所述应用程序保存所述测试信息。测试模块400用于向所述应用程序发送所述测试信息,使所述应用程序识别所述测试标识,并根据所述测试信息进行漏洞检测。

生成模块300还可以用于获取所述应用程序的资产数据,用于将所述资产数据代入数据库,以生成与所述资产数据对应的所述测试信息,其中,所述数据库内预存有不同的资产数据与不同的测试信息间的对应关系。

测试模块400还可以用于在所述应用程序识别到所述测试标识后,将所述测试标识存入所述应用程序的http请求入口函数的线程共享变量中。

测试装置20还可以包括判断模块(图中未示出),判断模块用于判断所述应用程序的漏洞检测函数是否会在未经安全处理的用户命令下执行。且所述测试模块400还可以用于在所述漏洞检测函数会在未经安全处理的用户命令下执行的情况下,发出输出警告的信号。在本发明的一些实施例中,所述测试模块400还可以用于在所述应用程序的漏洞检测函数不会在未经安全处理的用户命令下执行的情况下,不发出输出警告的信号,在本发明的另一些实施例中,所述测试模块400还可以用于在所述应用程序的漏洞检测函数不会在未经安全处理的用户命令下执行的情况下,发出输出表示应用程序正常的信号。具体地,输出的表示应用程序正常的信号可以被发送至上述各种输出装置,并可以以各种方式输出,例如,在本发明的一些实施例中,输出装置可以为音频装置,则表示应用程序正常的信号可以为音频信号,在本发明的另一些实施例中,输出装置可以为显示器,则表示应用程序正常的信号可以为文字信号等。

本发明的实施例提供的这种应用程序的测试方法、测试系统10及测试装置20能在自动完成对漏洞的测试的同时,有效区分对漏洞的测试的数据与其他检测的数据,保证对漏洞的测试产生的数据不会真正进入被测应用程序的数据库、文件等数据存储区,能保证对漏洞的测试数据不影响除漏洞测试以外的其他检测的状态与结果,并且不会占用应用程序的空间,也不会影响应用程序的存储区原有的数据。本发明的实施例提供的这种应用程序的测试方法、测试系统10及测试装置20可以运用于信息安全领域。这种应用程序的测试方法、测试系统10及测试装置20可以减少人工参与,可以自动对应用程序的安全漏洞进行检测。

对于本发明的实施例,还需要说明的是,在不冲突的情况下,本发明的实施例及实施例中的特征可以相互组合以得到新的实施例。

以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,本发明的保护范围应以权利要求的保护范围为准。

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