CN115599693A - 一种测试方法、装置、电子设备及存储介质 - Google Patents

一种测试方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN115599693A
CN115599693A CN202211368729.5A CN202211368729A CN115599693A CN 115599693 A CN115599693 A CN 115599693A CN 202211368729 A CN202211368729 A CN 202211368729A CN 115599693 A CN115599693 A CN 115599693A
Authority
CN
China
Prior art keywords
node
test
script file
input item
user input
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
Application number
CN202211368729.5A
Other languages
English (en)
Inventor
陈嫣
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Agricultural Bank of China
Original Assignee
Agricultural Bank of China
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Agricultural Bank of China filed Critical Agricultural Bank of China
Priority to CN202211368729.5A priority Critical patent/CN115599693A/zh
Publication of CN115599693A publication Critical patent/CN115599693A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3696Methods or tools to render software testable

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种测试方法、装置、电子设备及存储介质,所述方法包括:对获取的前端文件进行识别,得到用户输入项;基于所述用户输入项的节点属性生成目标输入项及所述目标输入项对应的第一脚本文件,并将所述第一脚本文件发送给服务器,所述脚本文件用于供服务器对所述用户输入项进行测试。该方法通过基于用户输入项的节点属性生成目标输入项及第一脚本文件,并将第一脚本文件发送给服务器,能够为服务器对用户输入项进行后续测试提供基础。

Description

一种测试方法、装置、电子设备及存储介质
技术领域
本发明涉及测试技术领域,尤其涉及一种测试方法、装置、电子设备及存储介质。
背景技术
银行系统对银行业务的作用至关重要,因此需要对系统进行阶段性地测试来保证系统的平稳运行。
现有对系统的测试方法主要侧重于功能测试和单元测试,即测试人员通过给每个函数单元编写测试驱动和测试用例进行覆盖率测试,或者针对整个系统的不同业务模块编写测试用例测试模块的整体功能。
此类测试方法虽然可以保证函数单元的代码覆盖以及业务逻辑在一定程度上的正确运转,但不能保证系统的稳定性和安全性。
发明内容
本发明提供了一种测试方法、装置、电子设备及存储介质,以通过测试方法来保证系统的稳定性和安全性。
根据本发明的一方面,提供了一种测试方法,包括:
对获取的前端文件进行识别,得到用户输入项;
基于所述用户输入项的节点属性生成目标输入项及所述目标输入项对应的第一脚本文件,并将所述第一脚本文件发送给服务器,所述脚本文件用于供服务器对所述用户输入项进行测试。
根据本发明的一方面,提供了一种测试方法,包括:
接收客户端发送的第一脚本文件,并确定所述第一脚本文件的调用函数;
识别所述调用函数对应的控制流图中的风险操作,并确定所述风险操作中的目标变化参数;
根据所述控制流图确定所述目标变化参数的路径约束信息;
对所述路径约束信息进行安全性测试,得到测试结果。
根据本发明的另一方面,提供了一种测试装置,包括:
识别模块,用于对获取的前端文件进行识别,得到用户输入项;
生成模块,用于基于所述用户输入项的节点属性生成目标输入项及所述目标输入项对应的第一脚本文件,并将所述第一脚本文件发送给服务器,所述脚本文件用于供服务器对所述用户输入项进行测试。
根据本发明的另一方面,提供了一种测试装置,包括:
接收模块,用于接收客户端发送的第一脚本文件,并确定所述第一脚本文件的调用函数;
第一确定模块,用于识别所述调用函数对应的控制流图中的风险操作,并确定所述风险操作中的目标变化参数;
第二确定模块,用于根据所述控制流图确定所述目标变化参数的路径约束信息;
测试模块,用于对所述路径约束信息进行安全性测试,得到测试结果。
根据本发明的另一方面,提供了一种电子设备,所述电子设备包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明任一实施例所述的测试方法。
根据本发明的另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现本发明任一实施例所述的测试方法。
本发明实施例提供了一种测试方法、装置、电子设备及存储介质,所述方法包括:对获取的前端文件进行识别,得到用户输入项;基于所述用户输入项的节点属性生成目标输入项及所述目标输入项对应的第一脚本文件,并将所述第一脚本文件发送给服务器,所述脚本文件用于供服务器对所述用户输入项进行测试。利用上述技术方案,通过基于用户输入项的节点属性生成目标输入项及第一脚本文件,并将第一脚本文件发送给服务器,能够为服务器对用户输入项进行后续测试提供基础。
应当理解,本部分所描述的内容并非旨在标识本发明的实施例的关键或重要特征,也不用于限制本发明的范围。本发明的其它特征将通过以下的说明书而变得容易理解。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例一提供的一种测试方法的流程图;
图2是根据本发明实施例二提供的一种测试方法的流程图;
图3是根据本发明实施例二提供的一种测试方法的结构示意图;
图4是根据本发明实施例三提供的一种测试装置的结构示意图;
图5是根据本发明实施例四提供的一种测试装置的结构示意图;
图6是根据本发明实施例五提供的一种电子设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例一
图1是根据本发明实施例一提供的一种测试方法的流程图,本实施例可适用于对用户输入项进行测试的情况,该方法可以由测试装置来执行,该测试装置可以采用硬件和/或软件的形式实现,该测试装置可配置于电子设备中。
可以认为的是,信贷业务一直是银行业重要的核心业务,底层功能完善、稳定性强的信贷系统对信贷业务的发展所起到的作用是显而易见的。
近年来不断发生信息系统被攻击渗透的风险事件,故金融系统需要针对各环节可能面对的攻击向量不断提升自身抗风险意识以及系统的安全性和稳定性,而作为最核心的信贷系统就亟待更新其测试方案,通过提升技术方案来加强稳定性和安全性的测试评估。
目前针对信贷系统使用的单元测试以及功能测试,其构造的有限的测试用例很难有效遍历代码在真实运行状态下所面临的各类输入边界值以及可能的攻击输入,从而无法保证系统的安全性和稳定性。
基于此,本发明实施例通过直接识别前端用户可能的输入点,以及后端对应处理逻辑的相关函数入口,并使用混合测试技术和快照技术对后端处理逻辑进行便利测试和分析,在遍历路径的同时根据预先定义的各类安全风险点和安全规则检测可能的漏洞,从而实现了对信贷系统稳定性和安全性的测试。如图1所示,该方法包括:
S110、对获取的前端文件进行识别,得到用户输入项。
其中,前端文件可以认为是用户触发客户端的访问页面时所获取到的源文件,如用户可以通过点击控件、直接输入链接或者其他方式来触发客户端的访问页面。在本实施例中,前端文件可以为HTML页面源文件。
用户输入项可以认为是用户在访问页面的输入框所输入的内容,本实施例的测试目标可以认为是测试有没有畸形的用户输入项会导致系统出现安全性问题。
本步骤首先可以对获取的前端文件进行识别,得到用户输入项,以进行后续的测试,其中,识别得到用户输入项的具体过程不作限定,示例性的,可以通过对前端文件对应的树形结构进行识别来确定用户输入项。
S120、基于所述用户输入项的节点属性生成目标输入项及所述目标输入项对应的第一脚本文件,并将所述第一脚本文件发送给服务器,所述脚本文件用于供服务器对所述用户输入项进行测试。
节点属性可以认为是用户输入项所对应节点的属性,如节点属性可以包括id属性、内容属性(或type属性),value属性和/或attribute属性等,id属性可以用于表征用户输入项所对应节点的标识,type属性可以用于表征用户输入项所对应节点所接受输入的类型,如type属性可以为文本、数字和/或邮箱等,value属性可以用于表征用户输入项所对应节点的默认值,attribute属性可以用于表征用户输入项对应节点所具有的属性,如attribute属性可以包括当前节点的大小,是否启用等关键信息。
目标输入项可以认为是根据用户输入项生成的新的输入项,第一脚本文件则可以是指Selenium可用的Web自动提交脚本,用于供服务器对用户输入项进行测试。Selenium可以认为是一个浏览器自动化测试库,用于测试web应用程序或任何需要与浏览器自动交互的任务。
具体的,在本实施例中可以基于得到的用户输入项的节点属性生成目标输入项及目标输入项对应的第一脚本文件,其中,生成目标输入项的步骤可以根据用户输入项的节点属性来确定,如本实施例中可以将生成目标输入项的过程理解为将用户输入项进行变异处理的过程,其中,type属性决定了变异规则,attribute属性决定了变化的范围等,value属性决定了初始值,比如通过type属性可以确定变异的规则为一个字符串,但并不知道字符串多长,那么可通过attribute属性来明确变化的范围,即可以极大地缩小变异的空间。
示例性的,当type属性为number类型时,变异规则可以为bit位、字节、双字节、四字节翻转,极大极小值替换,加减乘除运算等变异方法;当type属性为字符串类型时,变异规则可以使用字符串的拼接、替换等基础的变异方法,同时也增加替换不同编码形式的字符串等变异方法。
同时,生成目标输入项对应的第一脚本文件也可以基于用户输入项的节点属性来确定,示例性的,根据目标输入项的特征首先半自动化生成Selenium可用的Web自动提交脚本,然后根据type类型以及attribute属性限定的取值范围随机生成数值,并依次替换Web自动提交脚本中对应数值,以此生成目标输入项对应的第一脚本文件。
最后,可以将生成的第一脚本文件发送给服务器,以使服务器对用户输入项进行测试。
本发明实施例一提供的一种测试方法、装置、电子设备及存储介质,所述方法包括:对获取的前端文件进行识别,得到用户输入项;基于所述用户输入项的节点属性生成目标输入项及所述目标输入项对应的第一脚本文件,并将所述第一脚本文件发送给服务器,所述脚本文件用于供服务器对所述用户输入项进行测试。利用该方法,通过基于用户输入项的节点属性生成目标输入项及第一脚本文件,并将第一脚本文件发送给服务器,能够为服务器对用户输入项进行后续测试提供基础。
在一个实施例中,所述对获取的前端文件进行识别,得到用户输入项,包括:
对前端文件进行解析,生成所述前端文件对应的树形结构,并确定所述树形结构中满足预设条件的第一节点以及所述第一节点的节点属性;
基于所述第一节点的节点属性,对所述第一节点进行过滤,得到第二节点;
将所述第二节点作为用户输入项。
其中,第一节点可以认为是前端文件对应的树形结构中满足预设条件的节点,预设条件可以为相关人员预先设定的条件,如为特定类型的节点等。第二节点可以是指对第一节点进行过滤后得到的节点。
在一个实施方式中,首先可以对前端文件进行解析,生成前端文件对应的树形结构,然后对树形结构中满足预设条件的第一节点以及第一节点的节点属性进行确定,例如,可以按照树形结构对前端文件进行解析,然后对树形结构中input类型节点进行定位,并确定节点对应的id属性、type属性,value属性和attribute属性等。
随后,可以基于第一节点的节点属性对第一节点进行过滤,来得到第二节点,并将第二节点作为用户输入项,具体过滤的方式不限,如可以根据实际情况来进行过滤,只要能得到第二节点即可。
在一个实施例中,所述节点属性包括内容属性,所述基于所述第一节点的节点属性,对所述第一节点进行过滤,得到第二节点,包括:
基于预设内容类型对所述第一节点进行过滤,得到第三节点;
根据所述第三节点的节点属性生成所述第三节点对应的第二脚本文件;
将所述第二脚本文件发送给服务器,并接收服务器基于所述第二脚本文件返回的所述第三节点的反馈状态;
基于预设反馈状态对所述第三节点进行过滤,得到第二节点。
在本实施例中,预设内容类型可以是指预先设定的内容属性,具体内容可以根据经验值来确定;第三节点可以理解为基于预设内容类型对第一节点进行过滤后得到的节点,第二脚本文件则可认为是根据第三节点的节点属性生成的第三节点对应的脚本文件。
在一个实施方式中,可以基于预设内容类型对第一节点进行过滤,得到第三节点,然后根据第三节点的节点属性生成第三节点对应的第二脚本文件,随后根据服务器基于第二脚本文件返回的第三节点的反馈状态,基于预设反馈状态来对第三节点进行过滤,得到第二节点,预设反馈状态可以为预设的反馈状态,如正常或者异常。
示例性的,本实施例中预设内容类型可以是type属性为submit、reset、button和hidden,那么可以将第一节点中type属性为submit、reset、button和hidden的节点过滤掉,得到第三节点;然后根据第三节点的type类型(例如文本,数字,邮箱,颜色等等)以及attribute属性限定的取值范围随机生成数值,并依次替换Web自动提交脚本中对应的数值,得到第二脚本文件;继而基于第二脚本文件触发提交测试逻辑并得到反馈,根据反馈状态(提交后返回的信息正常或者异常)过滤无价值的input节点,以此得到第二节点。
此外,还可以对于需要分组归类的type数值为radio类型的input节点进行分类,如将radio类型的input节点按照name值进行分类。
需要说明的是,本实施例可以通过web自动提交脚本发出的请求,基于服务器进行测试来得到请求的反馈,即反馈状态,从而判断提交的请求中的input测试用例(即用户输入项)是否合理。
实施例二
图2是根据本发明实施例二提供的一种测试方法的流程图,本实施例可适用于对用户输入项进行测试的情况,该方法可以由测试装置来执行,该测试装置可以采用硬件和/或软件的形式实现,该测试装置可配置于电子设备中。如图2所示,该方法包括:
S210、接收客户端发送的第一脚本文件,并确定所述第一脚本文件的调用函数。
在本步骤中,调用函数可以是指需要调用的函数,可以认为的是,函数被调用的时机为服务器在处理客户端用户提交的第一脚本文件的请求时,比如前端(即客户端)用户输入了一个数据并提交请求,后端(即服务器)就会对这个请求进行处理,那么请求对应的处理函数也会被调用。
在一个实施例中,首先可以对客户端发送的第一脚本文件进行接收,并确定第一脚本文件的调用函数,确定调用函数的手段不限,示例性的,可以在后端源代码的各个函数中自动化插入监控代码,当函数被调用时则会自动记录被调用时的上下文信息,包括函数参数等,同时监控并记录函数内部变量非常量初始化或赋值时的数值。即当每次修改一个输入项并触发提交逻辑时,服务器则会确定被调用的函数,并记录非指针型变量的数值变化,从而通过比较每次变换前后各被赋值变量的数值变化,自动感知前端输入项对应的后端处理函数以及可控的后端参数。需要说明的是,此步骤中每个新的Web自动提交脚本触发一次后端的识别,对于可控变量的识别只是粗力度识别,初筛可能可控的变量。
S220、识别所述调用函数对应的控制流图中的风险操作,并确定所述风险操作中的目标变化参数。
其中,控制流图可以认为是以图的形式表示所有基本块执行的可能流向,也能反映一个过程的实时执行过程。在本实施例中,控制流图用于表征调用函数间和调用函数内的控制流关系。
风险操作可以是指控制流图中具有安全风险的操作,如高危操作;目标变化参数可以认为是受用户输入项控制的参数,即高危参数。
具体的,可以对调用函数对应控制流图中的风险操作进行识别,并确定风险操作中的目标变化参数。例如,首先可以基于静态分析方法对调用函数构建控制流图(ControlFlow Graph,CFG),并以识别出的函数(即调用函数)在该控制流图中的最上层节点作为该模块分析的起始点,进而对控制流图中的高危操作进行识别,如可以借助代码插装在对应的位置,以通过加入代码检测变量的数值。示例性的,高危操作主要包含三类:1)数据库操作,例如Java中常用的SQL语句设置函数接口;2)关联系统API调用,主要是对其他关联系统开放的API函数的调用;3)高危代码操作函数,例如文件读取函数,存在数组访问的循环体等,该部分可根据各种安全漏洞的形式生成对应的高危代码样式,直接在代码中做检索匹配。
针对这三类高危操作所涉及到的变量,本实施例可通过数据扰动的方法来判断其中的关键变量或者参数是否受用户输入项的控制(即目标变化参数),如重复对提交逻辑中的用户输入项进行变换,每变换一个输入项就触发一次自动化提交,同时后端在提交前首先还原到快照,然后记录各高危操作中数值,通过不断的迭代测试,来识别受外部输入控制的高危变量(即目标变化参数),同时还可标记出高危操作中的各变量和输入项之间的准确关联关系。
在一个实施例中,在所述确定所述测试请求对应的调用函数之前,还包括执行下述至少一项:
恢复内存的原始状态以及进程间的原始状态;
对数据库写操作和/或数据库读操作进行mock操作。
可以认为的是,为了保证准确的感知用户输入项对各高危操作节点可能造成的影响,本实施例可以在触发前端对应的提交逻辑前对后端系统代码做两部分操作。
在一个实施方式中,可以对对应的服务进程做快照,记录相关进程在处理提交逻辑前的寄存器和内存状态,以及进程间通讯的状态,以在每次后端处理完对应的提交后恢复到初始状态,即恢复内存的原始状态以及进程间的原始状态。
在一个实施方式中,可以对代码中可能的数据库写操作进行mock操作,直接返回成功代码即可;也可以针对数据库读操作进行mock操作,返回查询为空的状态,从而避免之前的读写逻辑对初始状态的改变影响后续的执行或者判断。
S230、根据所述控制流图确定所述目标变化参数的路径约束信息。
路径约束信息可以是指表征目标变化参数的路径约束的信息,路径约束会对一个对象沿着样条线或在多个样条线间的平均距离间的移动进行限制。
本步骤中,可以在确定了风险操作中的目标变化参数之后,根据控制流图对目标变化参数的路径约束信息进行确定,本实施例不对确定路径约束信息的过程作进一步限定,只要能得到路径约束信息即可。
S240、对所述路径约束信息进行安全性测试,得到测试结果。
在本实施例中,通过对确定的路径约束信息进行安全性测试,可以得到对应的测试结果,本实施例不对安全性测试的具体手段进行限定,如可以根据实际情况来进行确定。
在一个实施例中,所述对所述路径约束信息进行安全性测试包括下述至少一项:
对所述路径约束信息进行数据库操作代码安全测试;
对所述路径约束信息进行应用程序接口操作安全性测试;
对所述路径约束信息进行代码安全漏洞检测。
其中,数据库操作代码安全测试可以是指对数据库操作语句中高危变量对应的路径约束信息进行的测试;应用程序接口操作安全性测试可以是指针对关联系统的应用程序接口(Application Programming Interface,API)进行的测试;代码安全漏洞检测可以认为是对代码中目标变化参数对应的路径约束信息的检测。不同的安全性测试可以对应不同的测试过程,本实施例对此不作限定。
在一个实施例中,所述对所述路径约束信息进行数据库操作代码安全测试,包括:
判断所述路径约束信息对于数据库操作是否使用安全函数;
若是,则判断所述路径约束信息是否包含预设字段,得到判断结果;
根据所述判断结果来确定测试结果。
预设字段可以认为是预先设置的字段,如预设字段可以包括敏感的字符等。
在一个实施方式中,对于数据库操作语句中的高危变量,本实施例可以针对路径约束信息进行SQL注入类型的可攻击性分析,示例性的,针对数据库操作变量,首先可以检测执行路径中对于数据库的操作是否使用安全函数,如Java通过预编译方式来操作数据库,如果没有,则继续根据SQL注入语法模式来检查路径约束信息是否包含预设字段,如检查路径约束信息是否有对敏感的语法模式或者字段做过滤(即判断路径约束信息是否包含预设字段),如果两者都没有,则可以确定对应的目标变化参数存在数据库危险操作漏洞。
在一个实施例中,所述对所述路径约束信息进行应用程序接口操作安全性测试,包括:
对应用程序接口中目标变化参数的参数类型进行分析;
基于预设参数类型的目标变化参数以及对应的路径约束信息,确定测试结果。
预设参数类型可以认为是预先设置的参数类型。
在一个实施方式中,可以针对关联系统的API,对API中参数的参数类型进行自动化分析,例如可以针对可控的API中的变量进行针对性变异,如果API的调用返回异常状态,则说明该变量对应的数值可以触发异常;随后可以基于预设参数类型的目标变化参数对应的路径约束信息,确定测试结果,示例性的,可以将预设参数类型的目标变化参数对应的数值带入对应的路径约束信息中进行约束求解,如果有解则说明该异常可触发,即对该目标变化参数进行漏洞警报。
在一个实施例中,所述对所述路径约束信息进行代码安全漏洞检测,包括:
基于所述目标变化参数的位置和对应的路径约束信息进行代码安全漏洞检测。
在一个实施方式中,可以针对代码中不同位置处的高危变量(即目标变化参数),分别进行不同类型的检测。
具体的,对于数据对象使用处的目标变化参数,首先可以判断路径约束信息中是否存在对于其是否为空的判断,如果没有,则进一步检测路径约束信息中是否存在对于对象的初始化或赋值操作,以进一步判断是否存在失败的可能,如果有,则认为该目标变化参数存在风险,发出警报。
对于数组访问循环的语句,首先可以设置限制循环次数,如将限制循环次数的变量次数设置为大整数,然后执行该循环体,判断是否能越界访问,并将发生越界时的变量数值作为新的约束加到变量约束中,如果约束集合有解,则可认为该目标变化参数存在风险,进行漏洞警报。
对于命令执行函数处的目标变化参数,首先可以根据命令注入的各种形式构造字符串,找到可触发命令注入漏洞的字符串形式,然后检测高危变量的路径约束信息中是否存在对相关字符串的过滤,如果没有,则可认为该目标变化参数存在风险,进行漏洞警报。
在一个实施方式中,由于上述步骤中可能还存在一些误报,故还可以对相关的漏洞再次进行鉴别和验证,主要是根据可触发异常的输入构造真实的PoC(Proof ofConcept),从前端进行填充对应用户输入、提交,监控是否能触发后端对应的异常或者崩溃或者漏洞,如果可以则验证了漏洞为真实存在,否则可以进一步排查误报发生的原因,以通过反馈来提升漏洞检测模块或者约束提取模块的能力。
本发明实施例二提供的一种测试方法,接收客户端发送的第一脚本文件,并确定所述第一脚本文件的调用函数;识别所述调用函数对应的控制流图中的风险操作,并确定所述风险操作中的目标变化参数;根据所述控制流图确定所述目标变化参数的路径约束信息;对所述路径约束信息进行安全性测试,得到测试结果。利用该方法,通过对确定的目标变化参数的路径约束信息进行安全性测试,得到测试结果,实现了通过用户输入项来对系统进行测试,从而能够保证系统的稳定性和安全性。
在一个实施例中,所述根据所述控制流图确定所述目标变化参数的路径约束信息,包括:
根据所述控制流图确定所述目标变化参数的测试起点;
基于所述测试起点,采用至少两种测试方式对所述目标变化参数进行混合测试,得到所述目标变化参数的路径约束信息。
测试起点可以认为是对目标变化参数进行混合测试的起点。
具体的,在根据控制流图确定目标变化参数的路径约束信息的过程中,可以首先根据控制流图确定目标变化参数的测试起点,然后基于测试起点,采用至少两种测试方式对目标变化参数进行混合测试,得到目标变化参数的路径约束信息,其中,测试方式的具体内容可以根据经验来确定,如测试方式可以为采用实例化数据和/或变量符号化的方式等。
在一个实施例中,可以对受外部输入控制的高危变量(即目标变化参数)进行逆向分析,在控制流图中回溯各个语句对变量的操作过程,并最终找到其被赋值的起点(即测试起点)。
针对每个变量的起点,可以以一次正常数据提交触发的后端逻辑作为测试的初始状态,并在程序执行到变量被赋值处作为记录快照的起点,并记录相关服务的进程快照。然后从起点开始采用实例化数值和变量符号化进行混合测试,即用实际的数值作为变量的数值状态进行程序执行,同时用符号化的数值记录程序在执行过程中可能遇到的各种取值约束,执行到控制流图中的边界节点即退出执行。根据当前路径的路径约束,依次对其中的各个约束进行取反操作后再次求解,得到实例解后,回到快照点,替换对应的变量的实例化取值,再次进行混合测试。
通过混合测试方法一方面可以探索到高危函数的调用处,另一方面可以对其余的路径也进行路径遍历,探索潜在的死代码。对于执行到高危函数调用处的路径,即可直接得到对各个高危变量的路径约束。
在一个实施例中,所述方法还包括:
接收客户端发送的第二脚本文件;
根据所述第二脚本文件确定所述第二脚本文件所对应节点的反馈状态,并将所述反馈状态发送给所述客户端。
在一个实施方式中,可以接收客户端发送的第二脚本文件,并根据第二脚本文件对第二脚本文件所对应节点的反馈状态进行确定,随后将确定的反馈状态发送给客户端,以进行后续操作。
图3是根据本发明实施例二提供的一种测试方法的结构示意图,如图3所示,首先可以结合信贷系统业务逻辑由人工触发前端界面,通过信贷业务前端页面用户输入项识别模块对各前端页面中的代码进行自动化分析以识别其中的用户输入项,并提取各输入项对应的数据类型。
然后通过用户输入数据变异及自动填充模块,根据预定义的规则对各个用户输入数据项中的数据进行自动化生成及变异,如果存在对应的测试用例模版,则根据模板直接按规则变异并在页面中进行自动填充,并通过提交等方式循环触发该页面对应的后端处理逻辑。
继而在后端处理代码及用户输入可控变量识别模块中,首先可以在后端源代码的各个函数中自动化插入监控代码,当函数被调用时自动记录被调用时的上下文信息,包括函数参数等,同时监控并记录函数内部非指针类型变量的数值,即每次修改一个输入项并触发提交逻辑时监控后端被调用的函数,并记录非指针型变量的数值变化,从而可自动感知前端输入项对应的后端处理函数以及可控的后端参数。
随后,针对后端处理逻辑的混合执行测试模块从相关函数最外层函数起始点开始执行混合符号执行对相关路径进行遍历测试,这里符号化的变量即在后端处理代码及用户输入可控变量识别模块中识别的输入项可控的变量,其他变量使用实际数值的方式进行;当路径遍历执行到不同的语句时触发不同的异常检测模块,例如执行到数据库操作语句时,调用数据库操作代码安全测试模块,检测外部输入是否被写入数据库操作语句,则将参数替换为数据库安全性检测字符串,以检测SQL注入等类型的漏洞。
此外,还可以通过应用程序接口操作安全性测试和代码安全漏洞检测进行安全性测试,来支持更多的扩展。
最后,代码安全漏洞验证模块可以根据各错误检测模块的结果使用约束求解等方法进行自动化验证过滤误报。
实施例三
图4是根据本发明实施例三提供的一种测试装置的结构示意图。如图4所示,该装置包括:
识别模块310,用于对获取的前端文件进行识别,得到用户输入项;
生成模块320,用于基于所述用户输入项的节点属性生成目标输入项及所述目标输入项对应的第一脚本文件,并将所述第一脚本文件发送给服务器,所述脚本文件用于供服务器对所述用户输入项进行测试。
本发明实施例三提供的一种测试装置,通过识别模块310对获取的前端文件进行识别,得到用户输入项;通过生成模块320基于所述用户输入项的节点属性生成目标输入项及所述目标输入项对应的第一脚本文件,并将所述第一脚本文件发送给服务器,所述脚本文件用于供服务器对所述用户输入项进行测试。利用该装置,通过基于用户输入项的节点属性生成目标输入项及第一脚本文件,并将第一脚本文件发送给服务器,能够为服务器对用户输入项进行后续测试提供基础。
可选的,所述识别模块310包括:
解析单元,用于对前端文件进行解析,生成所述前端文件对应的树形结构,并确定所述树形结构中满足预设条件的第一节点以及所述第一节点的节点属性;
过滤单元,用于基于所述第一节点的节点属性,对所述第一节点进行过滤,得到第二节点;
确定单元,用于将所述第二节点作为用户输入项。
可选的,所述节点属性包括内容属性,所述过滤单元具体用于:
基于预设内容类型对所述第一节点进行过滤,得到第三节点;
根据所述第三节点的节点属性生成所述第三节点对应的第二脚本文件;
将所述第二脚本文件发送给服务器,并接收服务器基于所述第二脚本文件返回的所述第三节点的反馈状态;
基于预设反馈状态对所述第三节点进行过滤,得到第二节点。
本发明实施例所提供的测试装置可执行本发明任意实施例所提供的测试方法,具备执行方法相应的功能模块和有益效果。
实施例四
图5是根据本发明实施例四提供的一种测试装置的结构示意图。如图5所示,该装置包括:
第一接收模块410,用于接收客户端发送的第一脚本文件,并确定所述第一脚本文件的调用函数;
第一确定模块420,用于识别所述调用函数对应的控制流图中的风险操作,并确定所述风险操作中的目标变化参数;
第二确定模块430,用于根据所述控制流图确定所述目标变化参数的路径约束信息;
测试模块440,用于对所述路径约束信息进行安全性测试,得到测试结果。
本发明实施例四提供的一种测试装置,通过接收模块410接收客户端发送的第一脚本文件,并确定所述第一脚本文件的调用函数;通过第一确定模块420识别所述调用函数对应的控制流图中的风险操作,并确定所述风险操作中的目标变化参数;通过第二确定模块430根据所述控制流图确定所述目标变化参数的路径约束信息;通过测试模块440对所述路径约束信息进行安全性测试,得到测试结果。利用该装置,通过对确定的目标变化参数的路径约束信息进行安全性测试,得到测试结果,实现了通过用户输入项来对系统进行测试,从而能够保证系统的稳定性和安全性。
可选的,所述第二确定模块430包括:
根据所述控制流图确定所述目标变化参数的测试起点;
基于所述测试起点,采用至少两种测试方式对所述目标变化参数进行混合测试,得到所述目标变化参数的路径约束信息。
可选的,本发明实施例提供的一种测试装置还包括:
第二接收模块,用于接收客户端发送的第二脚本文件;
第三模块,用于根据所述第二脚本文件确定所述第二脚本文件所对应节点的反馈状态,并将所述反馈状态发送给所述客户端。
本发明实施例所提供的测试装置可执行本发明任意实施例所提供的测试方法,具备执行方法相应的功能模块和有益效果。
实施例五
图6示出了可以用来实施本发明的实施例的电子设备10的结构示意图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备(如头盔、眼镜、手表等)和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明的实现。
如图6所示,电子设备10包括至少一个处理器11,以及与至少一个处理器11通信连接的存储器,如只读存储器(ROM)12、随机访问存储器(RAM)13等,其中,存储器存储有可被至少一个处理器执行的计算机程序,处理器11可以根据存储在只读存储器(ROM)12中的计算机程序或者从存储单元18加载到随机访问存储器(RAM)13中的计算机程序,来执行各种适当的动作和处理。在RAM 13中,还可存储电子设备10操作所需的各种程序和数据。处理器11、ROM 12以及RAM 13通过总线14彼此相连。输入/输出(I/O)接口15也连接至总线14。
电子设备10中的多个部件连接至I/O接口15,包括:输入单元16,例如键盘、鼠标等;输出单元17,例如各种类型的显示器、扬声器等;存储单元18,例如磁盘、光盘等;以及通信单元19,例如网卡、调制解调器、无线通信收发机等。通信单元19允许电子设备10通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
处理器11可以是各种具有处理和计算能力的通用和/或专用处理组件。处理器11的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的处理器、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。处理器11执行上文所描述的各个方法和处理,例如测试方法。
在一些实施例中,测试方法可被实现为计算机程序,其被有形地包含于计算机可读存储介质,例如存储单元18。在一些实施例中,计算机程序的部分或者全部可以经由ROM12和/或通信单元19而被载入和/或安装到电子设备10上。当计算机程序加载到RAM 13并由处理器11执行时,可以执行上文描述的测试方法的一个或多个步骤。备选地,在其他实施例中,处理器11可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行测试方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本发明的方法的计算机程序可以采用一个或多个编程语言的任何组合来编写。这些计算机程序可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,使得计算机程序当由处理器执行时使流程图和/或框图中所规定的功能/操作被实施。计算机程序可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本发明的上下文中,计算机可读存储介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的计算机程序。计算机可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。备选地,计算机可读存储介质可以是机器可读信号介质。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在电子设备上实施此处描述的系统和技术,该电子设备具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给电子设备。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)、区块链网络和互联网。
计算系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务中,存在的管理难度大,业务扩展性弱的缺陷。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发明中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本发明的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

Claims (10)

1.一种测试方法,其特征在于,所述方法包括:
对获取的前端文件进行识别,得到用户输入项;
基于所述用户输入项的节点属性生成目标输入项及所述目标输入项对应的第一脚本文件,并将所述第一脚本文件发送给服务器,所述脚本文件用于供服务器对所述用户输入项进行测试。
2.根据权利要求1所述的方法,其特征在于,所述对获取的前端文件进行识别,得到用户输入项,包括:
对前端文件进行解析,生成所述前端文件对应的树形结构,并确定所述树形结构中满足预设条件的第一节点以及所述第一节点的节点属性;
基于所述第一节点的节点属性,对所述第一节点进行过滤,得到第二节点;
将所述第二节点作为用户输入项。
3.根据权利要求2所述的方法,其特征在于,所述节点属性包括内容属性,所述基于所述第一节点的节点属性,对所述第一节点进行过滤,得到第二节点,包括:
基于预设内容类型对所述第一节点进行过滤,得到第三节点;
根据所述第三节点的节点属性生成所述第三节点对应的第二脚本文件;
将所述第二脚本文件发送给服务器,并接收服务器基于所述第二脚本文件返回的所述第三节点的反馈状态;
基于预设反馈状态对所述第三节点进行过滤,得到第二节点。
4.一种测试方法,其特征在于,所述方法包括:
接收客户端发送的第一脚本文件,并确定所述第一脚本文件的调用函数;
识别所述调用函数对应的控制流图中的风险操作,并确定所述风险操作中的目标变化参数;
根据所述控制流图确定所述目标变化参数的路径约束信息;
对所述路径约束信息进行安全性测试,得到测试结果。
5.根据权利要求4所述的方法,其特征在于,所述根据所述控制流图确定所述目标变化参数的路径约束信息,包括:
根据所述控制流图确定所述目标变化参数的测试起点;
基于所述测试起点,采用至少两种测试方式对所述目标变化参数进行混合测试,得到所述目标变化参数的路径约束信息。
6.根据权利要求4所述的方法,其特征在于,还包括:
接收客户端发送的第二脚本文件;
根据所述第二脚本文件确定所述第二脚本文件所对应节点的反馈状态,并将所述反馈状态发送给所述客户端。
7.一种测试装置,其特征在于,所述装置包括:
识别模块,用于对获取的前端文件进行识别,得到用户输入项;
生成模块,用于基于所述用户输入项的节点属性生成目标输入项及所述目标输入项对应的第一脚本文件,并将所述第一脚本文件发送给服务器,所述脚本文件用于供服务器对所述用户输入项进行测试。
8.一种测试装置,其特征在于,所述装置包括:
接收模块,用于接收客户端发送的第一脚本文件,并确定所述第一脚本文件的调用函数;
第一确定模块,用于识别所述调用函数对应的控制流图中的风险操作,并确定所述风险操作中的目标变化参数;
第二确定模块,用于根据所述控制流图确定所述目标变化参数的路径约束信息;
测试模块,用于对所述路径约束信息进行安全性测试,得到测试结果。
9.一种电子设备,其特征在于,所述电子设备包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-6中任一项所述的测试方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现权利要求1-6中任一项所述的测试方法。
CN202211368729.5A 2022-11-03 2022-11-03 一种测试方法、装置、电子设备及存储介质 Pending CN115599693A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211368729.5A CN115599693A (zh) 2022-11-03 2022-11-03 一种测试方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211368729.5A CN115599693A (zh) 2022-11-03 2022-11-03 一种测试方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN115599693A true CN115599693A (zh) 2023-01-13

Family

ID=84851612

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211368729.5A Pending CN115599693A (zh) 2022-11-03 2022-11-03 一种测试方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN115599693A (zh)

Similar Documents

Publication Publication Date Title
CN111240994B (zh) 漏洞处理方法、装置、电子设备及可读存储介质
US20200272741A1 (en) Advanced Rule Analyzer to Identify Similarities in Security Rules, Deduplicate Rules, and Generate New Rules
US10735272B1 (en) Graphical user interface for security intelligence automation platform using flows
US10666666B1 (en) Security intelligence automation platform using flows
CN113326247B (zh) 云端数据的迁移方法、装置及电子设备
US12093389B2 (en) Data traffic characterization prioritization
CN114036531A (zh) 一种基于多尺度代码度量的软件安全漏洞检测方法
CN112559489A (zh) 基于跨链的区块链监管方法、设备及存储介质
CN115204733A (zh) 数据审计方法、装置、电子设备及存储介质
US20220277176A1 (en) Log classification using machine learning
CN115599693A (zh) 一种测试方法、装置、电子设备及存储介质
CN115935395A (zh) 一种数据处理方法、装置、设备以及存储介质
CN114492364A (zh) 相同漏洞的判断方法、装置、设备和存储介质
CN114329149A (zh) 页面信息自动抓取的检测方法、装置、电子设备及可读存储介质
CN112416799A (zh) 一种代码质量预警方法、装置、电子设备及存储介质
Liu [Retracted] Software Vulnerability Mining Techniques Based on Data Fusion and Reverse Engineering
CN112989403A (zh) 一种数据库破坏的检测方法、装置、设备及存储介质
CN111651753A (zh) 用户行为分析系统及方法
CN118502814B (zh) 一种基于字节码的软件改动评估方法、装置、设备及介质
CN116226673B (zh) 缓冲区漏洞识别模型的训练方法、漏洞检测方法及装置
EP4177778A1 (en) Detecting software vulnerabilities in a binary code
CN115865409A (zh) 一种代码风险检测方法、装置、设备及介质
CN118502732B (zh) 字节码程序的分析方法、装置、设备和介质
CN113961475B (zh) 基于规约导向的错误处理缺陷的检测方法及系统
CN116383058A (zh) 一种软件系统模型的转换方法、装置、电子设备及介质

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