CN108256322B - 安全测试方法、装置、计算机设备和存储介质 - Google Patents

安全测试方法、装置、计算机设备和存储介质 Download PDF

Info

Publication number
CN108256322B
CN108256322B CN201810079189.6A CN201810079189A CN108256322B CN 108256322 B CN108256322 B CN 108256322B CN 201810079189 A CN201810079189 A CN 201810079189A CN 108256322 B CN108256322 B CN 108256322B
Authority
CN
China
Prior art keywords
code
current
current code
access request
network access
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.)
Active
Application number
CN201810079189.6A
Other languages
English (en)
Other versions
CN108256322A (zh
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.)
Ping An Technology Shenzhen Co Ltd
Original Assignee
Ping An Technology Shenzhen Co Ltd
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 Ping An Technology Shenzhen Co Ltd filed Critical Ping An Technology Shenzhen Co Ltd
Priority to CN201810079189.6A priority Critical patent/CN108256322B/zh
Priority to PCT/CN2018/088856 priority patent/WO2019144548A1/zh
Publication of CN108256322A publication Critical patent/CN108256322A/zh
Application granted granted Critical
Publication of CN108256322B publication Critical patent/CN108256322B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请涉及一种安全测试方法、系统、计算机设备和存储介质。所述方法包括:接收当前网络访问请求,所述当前网络访问请求携带有统一资源定位符以及访问参数;根据所述统一资源定位符获取所述当前网络访问请求对应的当前代码;在所述当前代码中插入探针函数;在根据所述访问参数执行所述当前代码的过程中,通过所述探针函数记录所述当前代码中代码语句的执行顺序,得到所述当前代码的执行路径;检测所述当前代码的执行路径与预设路径是否一致;若所述执行路径与预设路径不一致,确定所述当前代码存在安全漏洞。采用本方法能够安全检测效率。

Description

安全测试方法、装置、计算机设备和存储介质
技术领域
本申请涉及安全技术领域,特别是涉及一种安全测试方法、装置、计算机设备和存储介质。
背景技术
随着互联网技术的发展以及网络信息的增长,越来越多的企业或者个人通过互联网提供信息服务。然而,在提供信息服务时,应用软件或操作系统设计时的缺陷或编码时产生的错误,或者在业务交互处理过程中的设计缺陷或逻辑流程上的不合理之处都会形成漏洞。为了避免漏洞被有意或无意地利用,从而造成损失,需要对进行漏洞检测。目前在检测漏洞时,通常需要了解代码的内部结构后再对代码进行安全测试,然而代码的数据量大,了解代码结构需要花费大量的时间,导致进行安全检测的效率低。
发明内容
基于此,有必要针对上述技术问题,提供一种能提高安全检测效率的安全测试方法、装置、计算机设备和存储介质。
一种安全测试方法,所述方法包括:接收当前网络访问请求,所述当前网络访问请求携带有统一资源定位符以及访问参数;根据所述统一资源定位符获取所述当前网络访问请求对应的当前代码;在所述当前代码中插入探针函数;在根据所述访问参数执行所述当前代码的过程中,通过所述探针函数记录所述当前代码中代码语句的执行顺序,得到所述当前代码的执行路径;检测所述当前代码的执行路径与预设路径是否一致;若所述执行路径与预设路径不一致,确定所述当前代码存在安全漏洞。
在一个实施例中,所述方法还包括:获取所述当前网络访问请求对应的当前网络页面;将所述访问参数与所述当前网络页面上预设的选项参数进行对比,确定所述选项参数与所述访问参数的包含关系;所述在所述当前代码中插入探针函数的步骤包括:若检测到所述选项参数不包括所述访问参数,在所述当前代码中插入探针函数。
在一个实施例中,所述方法还包括:获取所述当前代码对应的多个历史网络访问请求的历史执行路径;计算所述各个历史执行路径的分布比例,将超过预设分布比例的历史执行路径作为所述预设路径。
在一个实施例中,所述方法还包括:获取所述当前代码的代码特征,所述代码特征包括所述当前代码对应的变量约束条件;根据所述变量约束条件构造测试参数;根据所述测试参数执行所述当前代码,得到代码运行数据;根据所述代码运行数据确定所述当前代码对应的漏洞检测结果。
在一个实施例中,所述代码特征还包括所述当前代码对应的功能控件,所述根据所述测试参数执行所述当前代码,得到代码运行数据的步骤包括:根据所述功能控件以及所述测试参数构造测试网络访问请求;根据所述测试网络访问请求执行所述当前代码,得到代码运行数据。
在一个实施例中,所述方法还包括:若确定所述当前代码存在漏洞,丢弃所述当前网络访问请求。
在一个实施例中,所述在所述当前代码中插入探针函数的步骤包括:对所述当前代码进行检测,得到所述当前代码的目标语句,所述目标语句包括以下代码语句中的至少一个:当前代码的起始语句、终止语句、判断语句、变量约束条件对应的语句以及访问参数对应的代码语句;在所述当前代码的目标语句上插入探针函数。
一种安全测试装置,所述装置包括:请求接收模块,用于接收当前网络访问请求,所述当前网络访问请求携带有统一资源定位符以及访问参数;代码获取模块,用于根据所述统一资源定位符获取所述当前网络访问请求对应的当前代码;探针插入模块,用于在所述当前代码中插入探针函数;执行路径得到模块,用于在根据所述访问参数执行所述当前代码的过程中,通过所述探针函数记录所述当前代码中代码语句的执行顺序,得到所述当前代码的执行路径;检测模块,用于检测所述当前代码的执行路径与预设路径是否一致;漏洞确定模块,用于若所述执行路径与预设路径不一致,确定所述当前代码存在安全漏洞。
在一个实施例中,所述装置还包括:页面获取模块,用于获取所述当前网络访问请求对应的当前网络页面;包含关系确定模块,用于将所述访问参数与所述当前网络页面上预设的选项参数进行对比,确定所述选项参数与所述访问参数的包含关系;所述探针插入模块用于:若检测到所述选项参数不包括所述访问参数,在所述当前代码中插入探针函数。
在一个实施例中,所述装置还包括:历史路径得到模块,用于获取所述当前代码对应的多个历史网络访问请求的历史执行路径;预设路径得到模块,用于计算所述各个历史执行路径的分布比例,将超过预设分布比例的历史执行路径作为所述预设路径。
在一个实施例中,所述装置还包括:代码特征获取模块,用于获取所述当前代码的代码特征,所述代码特征包括所述当前代码对应的变量约束条件;参数构造模块,用于根据所述变量约束条件构造测试参数;执行模块,用于根据所述测试参数执行所述当前代码,得到代码运行数据;结果得到模块,用于根据所述代码运行数据确定所述当前代码对应的漏洞检测结果。
在一个实施例中,所述代码特征还包括所述当前代码对应的功能控件,所述执行模块用于:根据所述功能控件以及所述测试参数构造测试网络访问请求;根据所述测试网络访问请求执行所述当前代码,得到代码运行数据。
在一个实施例中,所述装置还包括:丢弃模块,用于若确定所述当前代码存在漏洞,丢弃所述当前网络访问请求。
在一个实施例中,所述探针插入模块用于:对所述当前代码进行检测,得到所述当前代码的目标语句,所述目标语句包括以下代码语句中的至少一个:当前代码的起始语句、终止语句、判断语句、变量约束条件对应的语句以及访问参数对应的代码语句;在所述当前代码的目标语句上插入探针函数。
一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:接收当前网络访问请求,所述当前网络访问请求携带有统一资源定位符以及访问参数;根据所述统一资源定位符获取所述当前网络访问请求对应的当前代码;在所述当前代码中插入探针函数;在根据所述访问参数执行所述当前代码的过程中,通过所述探针函数记录所述当前代码中代码语句的执行顺序,得到所述当前代码的执行路径;检测所述当前代码的执行路径与预设路径是否一致;若所述执行路径与预设路径不一致,确定所述当前代码存在安全漏洞。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:接收当前网络访问请求,所述当前网络访问请求携带有统一资源定位符以及访问参数;根据所述统一资源定位符获取所述当前网络访问请求对应的当前代码;在所述当前代码中插入探针函数;在根据所述访问参数执行所述当前代码的过程中,通过所述探针函数记录所述当前代码中代码语句的执行顺序,得到所述当前代码的执行路径;检测所述当前代码的执行路径与预设路径是否一致;若所述执行路径与预设路径不一致,确定所述当前代码存在安全漏洞。
上述安全测试方法、装置、计算机设备和存储介质,接收当前网络访问请求,当前网络访问请求携带有统一资源定位符以及访问参数,根据统一资源定位符获取执行当前网络访问请求的当前代码,在当前代码中插入探针函数,在根据访问参数执行当前代码的过程中,通过探针函数记录当前代码中代码语句的执行顺序,得到当前代码的执行路径,检测当前代码的执行路径与预设路径是否一致,若执行路径与预设路径不一致,确定当前代码存在安全漏洞,本发明实施例提供的方法利用探针函数获取网络访问请求对应的代码的执行路径,并将执行路径与预设路径对比得到漏洞测试结果,能够动态根据接收的网络访问请求进行漏洞检测,安全检测效率高。
附图说明
图1为一个实施例中安全测试方法的应用场景图;
图2为一个实施例中安全测试方法的流程示意图;
图3为一个实施例中安全测试方法的流程示意图;
图4为一个实施例中安全测试方法的流程示意图;
图5为一个实施例中安全测试装置的结构框图;
图6为一个实施例中安全测试装置的结构框图;
图7为一个实施例中安全测试装置的结构框图;
图8为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的安全测试方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104通过网络进行通信。服务器104上设置有中间件以及应用程序,中间件用于执行本发明实施例提供的方法。用户可以通过终端102发送网络访问请求,当接收到终端102发送的网络访问请求时,由于应用程序设置在中间件上,因此服务器104上的中间件可以获取当前网络访问请求对应的当前代码,并在当前代码中插入探针函数,以在执行当前代码的过程中,通过探针函数记录当前代码中代码语句的执行顺序,得到当前代码的执行路径,并检测当前代码的执行路径与预设路径是否一致,若执行路径与预设路径不一致,确定当前代码存在安全漏洞。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备等可以进行网络访问的设备,服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现,中间件指提供系统软件和应用软件之间连接的软件,以便于软件各部件之间的沟通,中间件在操作系统、网络和数据库之上,应用软件的下层,能够为处于自己上层的应用软件提供运行与开发的环境。
在一个实施例中,如图2所示,提供了一种安全测试方法,以该方法应用于图1中的服务器为例进行说明,包括以下步骤:
步骤S202,接收当前网络访问请求,当前网络访问请求携带有统一资源定位符以及访问参数。
具体地,统一资源定位符(URL,Universal Resource Locator)是对可以从因特网上得到的资源的位置和访问方法的一种简洁的表示。通过统一资源定位符可以定位到对应的资源。访问参数可以是用户输入的,也可以是在发出网络访问请求对应的网络页面上选择的。例如,访问参数可以是用户在登录应用程序时输入的用户名以及密码、输入的检索词等。当要访问数据库时,用户也可以通过在数据库的前端页面上选择对应检索选项,检索选项为访问参数。当需要访问相应的页面时,用户可以在终端上输入或者选择访问参数,发出网络访问请求,终端向服务器发送网络访问请求,并携带对应的统一资源定位符以及访问参数。例如网络访问请求携带的数据可以为“http://ww.test.com/login?username=123&pwd=234”,其中,“?”后面的字符username=123&pwd=234中,表示用户名为123,密码为234。统一资源定位符为““http://ww.test.com/login”。
步骤S204,根据统一资源定位符获取当前网络访问请求对应的当前代码。
具体地,预先设置了统一资源定位符与代码的对应关系,因此可以根据当前网络访问请求携带的统一资源定位符获取执行当前网络访问请求对应的当前代码。当前代码可以包括一个或多个代码语句。
步骤S206,在当前代码中插入探针函数。
具体地,插入探针函数是指对当前代码进行插桩处理,插桩处理可以在不破坏代码原有逻辑完整性的前提下,在代码的相应位置上插入探针,以对代码执行过程中的信息进行采集,例如控制流以及数据流信息等。可以调用开源框架spring的拦截器功能进行代码插桩。插入探针的函数的位置可以是每一个代码语句。
在一个实施例中,为了减少探针数量的同时且能够采集到关键的路径,因此在当前代码中插入探针函数的步骤包括:对当前代码进行检测,得到当前代码的目标语句,在当前代码的目标语句上插入探针函数。其中目标语句包括以下代码语句中的至少一个:当前代码的起始语句、终止语句、判断语句、变量约束条件对应的语句以及访问参数对应的代码语句。
具体地,在进行代码插桩时,可以选择代码的关键位置进行代码插桩,例如关键位置可以是代码的起始位置、终止位置、代码中变量约束条件对应的位置、网络访问参数对应的代码位置以及代码的判断语句之中的一个或多个。在一些实施例中,也可以是在代码的判断语句的位置上进行插桩,例如,若判断代码中包括“if”语句,则进行代码插桩。
在一个实施例中,为了降低服务器的负载,可以根据访问参数的信息类型确定漏洞检测策略,若访问参数的信息类型为静态信息,则不执行漏洞检测或者仅对当前代码进行静态漏洞检测。若参数的信息类型为动态信息,则执行静态漏洞检测以及动态漏洞检测。静态信息是指在当前网络访问请求对应的当前网络访问页面上可以选择的参数,动态信息是指用户输入的参数。因此,在接收到当前网络访问请求时,可以将当前网络访问请求的访问参数与当前网络访问页面上展示的参数进行对比。若不是当前网络访问页面上展示的参数,则对当前代码插入探针函数。静态漏洞检测是指不运行代码进行漏洞检测,动态漏洞检测是指需要运行代码进行漏洞检测。
在一个实施例中,为了减少中间件进行漏洞检测的负载,还可以根据当前网络访问请求的访问参数以及当前网络访问请求的类型确定是否在当前代码中插入探针函数,以进行漏洞检测,具体的规则可以根据实际需要进行设置。例如,若用户参数中包括“?”字符而且用户请求的类型为获取数据,则进行漏洞检测。或者当前网络访问请求中包括命令分隔符包括如“:”、“。”,而且当前网络访问请求的类型为获取数据时在当前代码中插入探针函数,以进行漏洞检测。
步骤S208,在根据访问参数执行当前代码的过程中,通过探针函数记录当前代码中代码语句的执行顺序,得到当前代码的执行路径。
具体地,得到当前代码后,根据访问参数执行当前代码。例如,当访问参数为进行登录的用户名以及密码时,则执行当前代码,以进行登录。在访问条件是数据库的检索条件时,则根据检索条件以及对应的代码执行检索。代码语句的执行顺序可以是通过记录代码语句的执行时间得到。得到代码语句的执行顺序后,按照执行顺序组成执行路径。例如,当前代码的代码语句包括A、B、C、D四个代码语句,若是在A、C上插入了探针函数,探针函数得到的在执行当前代码的过程中的执行顺序依次为A、C。则执行路径为A→C。
步骤S210,检测当前代码的执行路径与预设路径是否一致。
具体地,预设路径是预先设置的。例如可以预先设置预设路径为:A→C→B。预设路径可以是根据当前代码对应的历史网络访问请求对应的执行路径得到的。获取到当前代码的执行路径后,将当前代码与预设路径进行对比,检测当前代码与预设路径是否一致。
在一个实施例中,可以获取当前代码对应的多个历史网络访问请求的历史执行路径,计算各个历史执行路径的分布比例,将超过预设分布比例的历史执行路径作为预设路径。计算各个历史执行路径的分布比例,将超过预设分布比例的历史执行路径作为预设路径的方法可以根据需要进行设置。例如,可以将各个历史网络访问请求的历史执行路径进行对比,确定各个历史执行路径的执行次数,以统计各个历史执行路径的分布比例,将分布比例超过预设比例如90%历史执行路径作为预设路径。或者,对接收到历史网络访问请求时执行当前代码所调用的进程进行分析,确定是否是白名单中的进程,若是,将该历史网络访问请求对应的执行路径作为预设路径。
步骤S212,若执行路径与预设路径不一致,确定当前代码存在安全漏洞。
具体地,若执行路径与预设路径不一致,说明存在异常,可以判断当前代码存在漏洞。例如若预设路径为A→C→B,而执行路径为A→B→C,执行路径与预设路径不一致。若执行路径与预设路径一致,则可以判断当前代码不存在漏洞。当然,若执行路径与预设路径一致,也可以根据其他漏洞检测规则进一步确定当前代码是否存在漏洞。例如可以获取根据访问参数执行当前代码得到的数据,根据运行结果确定是否存在异常。若异常,判断当前代码存在漏洞。
在一个实施例中,对于运行结果,可以获取运行结果的数据量的大小,若数据量大于预设阈值,则可以判断当前代码存在漏洞,预设阈值可以根据实际需要进行设置,例如为1G。例如,对于获取数据库数据的网络访问请求,若根据检索条件得到的数量的数据量大于1G,说明存在异常,则可以确定当前存在漏洞。
在一个实施例中,还可以判断运行结果的数据的类型以及数据的显示形式,若数据的类型为敏感数据和/或数据显示形式为明文时,则可以判断当前代码存在漏洞。例如,若发现得到的数据为密码信息,且数据为明文,则可以判断当前代码存在漏洞。
在一个实施例中,还可以获取根据访问参数执行当前代码的执行时长,将执行时长与时长阈值进行比对,若超过预设时长,则表明当前代码存在漏洞。时长阈值可以是一个固定的时长,也可以是动态变化的。例如,根据历史网络访问请求的运行时长进行确定时长阈值,将超过预设阈值例如95%的历史网络访问请求的运行时长的值作为时长阈值。
在一个实施例中,若检测到当前代码存在漏洞,可以丢弃当前网络访问请求,如不向发出当前网络访问请求的终端发送当前网络访问请求对应的响应信息例如数据查询结果,以避免用户通过当前代码的漏洞侵害服务器。若不存在漏洞,则可以将前网络访问请求对应的响应信息返回到终端中。
在一个实施例中,若检测到漏洞,可以发出漏洞提醒信息,以提醒测试人员检测当前代码,对漏洞进行修复。在进行修复前,可以将当前代码的状态标识为待修正,若在代码状态为待修正时,接收到当前代码对应的网络访问请求,则可以拒绝对网络访问请求进行响应。
在一个实施例中,在进行动态测试即根据访问参数执行当前代码,以进行漏洞测试之前,也可以对当前代码进行静态漏洞检测,判断当前代码中是否存在恶意代码。例如将当前代码与预设的堆喷射代码、iframe代码和shellcode代码等恶意代码进行对比,确定是否存在恶意代码。若不存在,进一步进行动态测试。若存在,则可以判断当前代码存在漏洞,不再进行动态测试。
上述安全测试方法中,接收当前网络访问请求,当前网络访问请求携带有统一资源定位符以及访问参数,根据统一资源定位符获取执行当前网络访问请求的当前代码,在当前代码中插入探针函数,在根据访问参数执行当前代码的过程中,通过探针函数记录当前代码中代码语句的执行顺序,得到当前代码的执行路径,检测当前代码的执行路径与预设路径是否一致,若执行路径与预设路径不一致,确定当前代码存在安全漏洞,本发明实施例提供的方法利用探针函数获取网络访问请求对应的代码的执行路径,并将执行路径与预设路径对比得到漏洞测试结果,能够动态根据接收的网络访问请求进行漏洞检测,安全检测效率高。
在一个实施例中,如图3所示,安全检测方法还可以包括以下步骤:
步骤S302,获取当前网络访问请求对应的当前网络页面。
具体地。当前网络页面是指发送当前网络访问请求的页面,例如,当当前网络访问请求为检索请求时,输入检索关键词的页面为检索请求对应的当前网络页面。当当前网络访问请求为获取数据库中的数据的请求时,数据库对应的用于输入或者选择检索条件的前端页面为获取数据库中的数据的请求对应的当前网络页面。
步骤S304,将访问参数与当前网络页面上预设的选项参数进行对比,确定选项参数与访问参数的包含关系。
具体地,当前网络页面上预设的选项参数是指可以在当前网络页面上进行选择的参数。例如,当前网络页面上可以设置有选择参数的下拉框,可以点击该下拉框并选择下拉框上展示的参数,则下拉框上展示的参数为预设的选项参数。在得到当前网络页面后,获取当前网络页面上预设的选项参数,并将访问参数与预设的选择参数进行对比,确定选择参数与访问参数的包含关系,即预设的选择参数是否包括访问参数。
在一个实施例中,步骤S206即在所述当前代码中插入探针函数的步骤包括:若检测到选项参数不包括访问参数,在所述当前代码中插入探针函数。
具体地,选项参数不包括访问参数是指访问参数中的至少一个不是选项参数。若检测到选项参数不包括访问参数,说明访问参数是用户自行构造的,为动态信息,可能存在风险,因此可以在当前代码中插入探针函数,以进行动态漏洞检测。若为访问参数静态信息,即选项参数包括访问参数时,可以进行静态漏洞检测。
在一个实施例中,如图4所示,安全检测方法还包括:
步骤S402,获取当前代码的代码特征,代码特征包括当前代码对应的变量约束条件。
具体地,变量约束条件是指当前代码中对输入的变量进行限制的限制条件。可以在执行当前代码的过程中获取当前代码对应的变量约束条件。也可以是在执行当前代码之前或者当检测到当前代码存在漏洞时获取当前代码对应的变量约束条件。获取变量约束条件时,可以判断当前代码中是否存在if语句,若存在,提取if语句中的变量约束条件。
步骤S404,根据变量约束条件构造测试参数。
具体地,测试参数用于对当前代码进行测试。得到变量约束条件后,则可以根据变量约束条件构造测试函数。根据变量约束条件构造测试参数的规则可以根据需要进行设置。
在一个实施例中,可以构造变量约束条件的边界值作为测试参数。例如,若代码中变量约束条件为x大于5,则可以构造边界值5附近的参数作为测试参数,如5.1、4.9999999999等。
在一个实施例中,当变量约束条件包括两个以上时,则可以根据各个变量约束条件构造测试参数,再将各个变量约束条件的测试参数进行组合,得到最终的测试参数。例如登录密码的变量约束条件包括两个:大于10个字符以及首字符为数字。则可以根据大于10个字符的变量约束条件构造大于10个字符的有效测试参数、小于等于10个字符的无效测试参数。以及根据首字符为数字的变量约束条件构造首字母为数字的有效参数、首字符为非数字的无效测试参数。然后将根据变量约束条件构造的测试参数进行两两组合,得到测试参数,假设构造的小于10个字符的测试参数为1001,首字符为数字的测试参数为a,则组合后最终得到的测试参数为a1001。
在一个实施例中,若执行路径与预设路径不一致,可以根据访问参数构造测试参数,如将访问参数进行变形后得到黑盒的测试参数。例如,若访问参数为用户名“admin”,且利用该用户名进行登录时存在漏洞。则可以将adminx01、admin1作为测试参数。
步骤S406,根据测试参数执行当前代码,得到代码运行数据。
具体地,得到当前测试参数后,可以将测试参数传入当前代码中,以根据测试参数执行当前代码,得到代码运行数据。代码运行数据可以是根据测试参数执行当前代码对应的路径,也可以是根据测试参数执行当前代码得到的结果例如对数据库进行查询得到的数据等。
在一个实施例中,代码特征包括当前代码对应的功能控件,因此根据测试参数执行当前代码,得到代码运行数据的步骤包括:根据功能控件以及测试参数构造测试网络访问请求,并根据测试网络访问请求执行当前代码,得到代码运行数据。
具体的,代码对应的控件标识可以是对代码进行检测得到的,也可以是预先设置的。得到控件标识后,根据变量约束条件构造测试参数,并触发点击控件的动作,发送测试网络访问请求,测试网络请求携带测试参数,以根据测试网络访问请求执行当前代码,得到代码运行数据。
步骤S408,根据代码运行数据确定当前代码对应的漏洞检测结果。
具体地,漏洞检测结果可以包括存在漏洞以及不存在漏洞。根据代码运行数据确定当前代码对应的漏洞检测结果的规则可以根据实际进行设置。例如,可以判断根据测试参数执行当前代码对应的路径是否与预设路径一致,若不一致,则存在漏洞。也可以判断根据测试参数执行当前代码得到的数据的数据量是否大于预设值。例如对数据库进行查询得到的数据量是否大于预设值,若大于预设值,则可以判断当前代码存在漏洞。
本发明实施例中,根据变量约束条件构造测试参数可以对当前代码进行进一步的漏洞测试,提高了漏洞测试的准确性以及全面性。
应该理解的是,虽然上述的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,上述中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图5所示,提供了一种安全测试装置,包括:请求接收模块502、代码获取模块504、探针插入模块506、执行路径得到模块508、检测模块510和漏洞确定模块512,其中:
请求接收模块502,用于接收当前网络访问请求,当前网络访问请求携带有统一资源定位符以及访问参数。
代码获取模块504,用于根据统一资源定位符获取当前网络访问请求对应的当前代码。
探针插入模块506,用于在当前代码中插入探针函数。
执行路径得到模块508,用于在根据访问参数执行当前代码的过程中,通过探针函数记录当前代码中代码语句的执行顺序,得到当前代码的执行路径。
检测模块510,用于检测当前代码的执行路径与预设路径是否一致。
漏洞确定模块512,用于若执行路径与预设路径不一致,确定当前代码存在安全漏洞。
在一个实施例中,如图6所示,安全检测装置还包括:
页面获取模块602,用于获取当前网络访问请求对应的当前网络页面。
包含关系确定模块604,用于将访问参数与当前网络页面上预设的选项参数进行对比,确定选项参数与访问参数的包含关系。
执行探针插入模块506用于:若检测到选项参数不包括访问参数,在当前代码中插入探针函数。
在一个实施例中,安全测试装置还包括:历史路径得到模块,用于获取当前代码对应的多个历史网络访问请求的历史执行路径。以及,预设路径得到模块,用于计算各个历史执行路径的分布比例,将超过预设分布比例的历史执行路径作为预设路径。
在一个实施例中,如图7所示,安全测试装置还包括:
代码特征获取模块702,用于获取当前代码的代码特征,代码特征包括当前代码对应的变量约束条件。
参数构造模块704,用于根据变量约束条件构造测试参数。
执行模块706,用于根据测试参数执行当前代码,得到代码运行数据。
结果得到模块708,用于根据代码运行数据确定当前代码对应的漏洞检测结果。
在一个实施例中,代码特征还包括当前代码对应的功能控件,执行模块用于:根据功能控件以及测试参数构造测试网络访问请求。根据测试网络访问请求执行当前代码,得到代码运行数据。
在一个实施例中,装置还包括丢弃模块,用于若确定当前代码存在漏洞,丢弃当前网络访问请求。
在一个实施例中,探针插入模块506用于:对当前代码进行检测,得到当前代码的目标语句,目标语句包括以下代码语句中的至少一个:当前代码的起始语句、终止语句、判断语句、变量约束条件对应的语句以及访问参数对应的代码语句。在当前代码的目标语句上插入探针函数。
关于安全测试装置的具体限定可以参见上文中对于安全测试方法的限定,在此不再赘述。上述安全测试装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图8所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种安全测试方法。
本领域技术人员可以理解,图8中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:接收当前网络访问请求,当前网络访问请求携带有统一资源定位符以及访问参数;根据统一资源定位符获取当前网络访问请求对应的当前代码;在当前代码中插入探针函数;在根据访问参数执行当前代码的过程中,通过探针函数记录当前代码中代码语句的执行顺序,得到当前代码的执行路径;检测当前代码的执行路径与预设路径是否一致;若执行路径与预设路径不一致,确定当前代码存在安全漏洞。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:获取当前网络访问请求对应的当前网络页面;将访问参数与当前网络页面上预设的选项参数进行对比,确定选项参数与访问参数的包含关系;在当前代码中插入探针函数的步骤包括:若检测到选项参数不包括访问参数,在所述当前代码中插入探针函数。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:获取当前代码对应的多个历史网络访问请求的历史执行路径;计算各个历史执行路径的分布比例,将超过预设分布比例的历史执行路径作为预设路径。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:获取当前代码的代码特征,代码特征包括当前代码对应的变量约束条件;根据变量约束条件构造测试参数;根据测试参数执行当前代码,得到代码运行数据;根据代码运行数据确定当前代码对应的漏洞检测结果。
在一个实施例中,代码特征还包括当前代码对应的功能控件,处理器所执行的根据测试参数执行当前代码,得到代码运行数据的步骤包括:根据功能控件以及测试参数构造测试网络访问请求;根据测试网络访问请求执行当前代码,得到代码运行数据。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:若确定当前代码存在漏洞,丢弃当前网络访问请求。
在一个实施例中,处理器所执行的在当前代码中插入探针函数的步骤包括:对当前代码进行检测,得到当前代码的目标语句,目标语句包括以下代码语句中的至少一个:当前代码的起始语句、终止语句、判断语句、变量约束条件对应的语句以及访问参数对应的代码语句;在当前代码的目标语句上插入探针函数。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:接收当前网络访问请求,当前网络访问请求携带有统一资源定位符以及访问参数;根据统一资源定位符获取当前网络访问请求对应的当前代码;在当前代码中插入探针函数;在根据访问参数执行当前代码的过程中,通过探针函数记录当前代码中代码语句的执行顺序,得到当前代码的执行路径;检测当前代码的执行路径与预设路径是否一致;若执行路径与预设路径不一致,确定当前代码存在安全漏洞。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:获取当前网络访问请求对应的当前网络页面;将访问参数与当前网络页面上预设的选项参数进行对比,确定选项参数与访问参数的包含关系;在当前代码中插入探针函数的步骤包括:若检测到选项参数不包括访问参数,在当前代码中插入探针函数。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:获取当前代码对应的多个历史网络访问请求的历史执行路径;计算各个历史执行路径的分布比例,将超过预设分布比例的历史执行路径作为预设路径。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:获取当前代码的代码特征,代码特征包括当前代码对应的变量约束条件;根据变量约束条件构造测试参数;根据测试参数执行当前代码,得到代码运行数据;根据代码运行数据确定当前代码对应的漏洞检测结果。
在一个实施例中,代码特征还包括当前代码对应的功能控件,处理器所执行的根据测试参数执行当前代码,得到代码运行数据的步骤包括:根据功能控件以及测试参数构造测试网络访问请求;根据测试网络访问请求执行当前代码,得到代码运行数据。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:若确定当前代码存在漏洞,丢弃当前网络访问请求。
在一个实施例中,处理器所执行的在当前代码中插入探针函数的步骤包括:对当前代码进行检测,得到当前代码的目标语句,目标语句包括以下代码语句中的至少一个:当前代码的起始语句、终止语句、判断语句、变量约束条件对应的语句以及访问参数对应的代码语句;在当前代码的目标语句上插入探针函数。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种安全测试方法,所述方法包括:
接收当前网络访问请求,所述当前网络访问请求携带有统一资源定位符以及访问参数;
根据所述统一资源定位符获取所述当前网络访问请求对应的当前代码;
在所述当前代码中插入探针函数;
在根据所述访问参数执行所述当前代码的过程中,通过所述探针函数记录所述当前代码中代码语句的执行顺序,得到所述当前代码的执行路径;
检测所述当前代码的执行路径与预设路径是否一致;
若所述执行路径与预设路径不一致,确定所述当前代码存在安全漏洞;
其中,所述访问参数为用户在所述当前网络访问请求对应的当前网络页面输入的,当所述当前网络页面上预设的选项参数不包括所述访问参数时,则执行所述在所述当前代码中插入探针函数的步骤,所述当前网络页面上预设的选项参数为在所述当前网络页面上进行选择的参数。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取所述当前网络访问请求对应的当前网络页面;
将所述访问参数与所述当前网络页面上预设的选项参数进行对比,确定所述选项参数与所述访问参数的包含关系。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取所述当前代码对应的多个历史网络访问请求的历史执行路径;
计算所述历史执行路径的分布比例,将超过预设分布比例的历史执行路径作为所述预设路径。
4.根据权利要求1至3任意一项所述的方法,其特征在于,所述方法还包括:
获取所述当前代码的代码特征,所述代码特征包括所述当前代码对应的变量约束条件;
根据所述变量约束条件构造测试参数;
根据所述测试参数执行所述当前代码,得到代码运行数据;
根据所述代码运行数据确定所述当前代码对应的漏洞检测结果。
5.根据权利要求4所述的方法,其特征在于,所述代码特征还包括所述当前代码对应的功能控件,所述根据所述测试参数执行所述当前代码,得到代码运行数据的步骤包括:
根据所述功能控件以及所述测试参数构造测试网络访问请求;
根据所述测试网络访问请求执行所述当前代码,得到代码运行数据。
6.根据权利要求1至3任意一项所述的方法,其特征在于,所述方法还包括:
若确定所述当前代码存在漏洞,丢弃所述当前网络访问请求。
7.根据权利要求1至3任意一项所述的方法,其特征在于,所述在所述当前代码中插入探针函数的步骤包括:
对所述当前代码进行检测,得到所述当前代码的目标语句,所述目标语句包括以下代码语句中的至少一个:当前代码的起始语句、终止语句、判断语句、变量约束条件对应的语句以及访问参数对应的代码语句;
在所述当前代码的目标语句上插入探针函数。
8.一种安全测试装置,所述装置包括:
请求接收模块,用于接收当前网络访问请求,所述当前网络访问请求携带有统一资源定位符以及访问参数;
代码获取模块,用于根据所述统一资源定位符获取所述当前网络访问请求对应的当前代码;
探针插入模块,用于在所述当前代码中插入探针函数;
执行路径得到模块,用于在根据所述访问参数执行所述当前代码的过程中,通过所述探针函数记录所述当前代码中代码语句的执行顺序,得到所述当前代码的执行路径;
检测模块,用于检测所述当前代码的执行路径与预设路径是否一致;
漏洞确定模块,用于若所述执行路径与预设路径不一致,确定所述当前代码存在安全漏洞;
其中,所述访问参数为用户在所述当前网络访问请求对应的当前网络页面输入的,当所述当前网络页面上预设的选项参数不包括所述访问参数时,则执行所述在所述当前代码中插入探针函数的步骤,所述当前网络页面上预设的选项参数为在所述当前网络页面上进行选择的参数。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
CN201810079189.6A 2018-01-26 2018-01-26 安全测试方法、装置、计算机设备和存储介质 Active CN108256322B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201810079189.6A CN108256322B (zh) 2018-01-26 2018-01-26 安全测试方法、装置、计算机设备和存储介质
PCT/CN2018/088856 WO2019144548A1 (zh) 2018-01-26 2018-05-29 安全测试方法、装置、计算机设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810079189.6A CN108256322B (zh) 2018-01-26 2018-01-26 安全测试方法、装置、计算机设备和存储介质

Publications (2)

Publication Number Publication Date
CN108256322A CN108256322A (zh) 2018-07-06
CN108256322B true CN108256322B (zh) 2020-10-27

Family

ID=62742967

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810079189.6A Active CN108256322B (zh) 2018-01-26 2018-01-26 安全测试方法、装置、计算机设备和存储介质

Country Status (2)

Country Link
CN (1) CN108256322B (zh)
WO (1) WO2019144548A1 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109344611B (zh) * 2018-09-06 2024-02-27 天翼安全科技有限公司 应用的访问控制方法、终端设备及介质
CN110300119B (zh) * 2019-07-09 2021-09-14 国家计算机网络与信息安全管理中心 一种漏洞验证的方法及电子设备
CN111176975B (zh) * 2019-08-02 2021-06-25 腾讯科技(深圳)有限公司 一种测试方法、装置、设备及计算机可读存储介质
CN112905443B (zh) * 2019-12-04 2024-06-14 阿里巴巴集团控股有限公司 一种测试用例生成方法、设备及存储介质
CN112527691B (zh) * 2021-02-18 2021-06-11 深圳开源互联网安全技术有限公司 程序安全检测防护方法、中间件系统及安全中间件系统
CN113360419B (zh) * 2021-08-11 2022-06-07 云智慧(北京)科技有限公司 一种应用的数据处理方法、装置及设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105653949A (zh) * 2014-11-17 2016-06-08 华为技术有限公司 一种恶意程序检测方法及装置
CN105939350A (zh) * 2016-05-30 2016-09-14 北京京东尚科信息技术有限公司 网络访问控制方法和系统
CN106101145A (zh) * 2016-08-10 2016-11-09 北京神州绿盟信息安全科技股份有限公司 一种网站漏洞检测方法及装置
CN106529286A (zh) * 2016-10-17 2017-03-22 杭州迪普科技股份有限公司 一种行为检测方法和装置
CN107315961A (zh) * 2017-07-11 2017-11-03 北京奇虎科技有限公司 程序漏洞检测方法及装置、计算设备、存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102088379B (zh) * 2011-01-24 2013-03-13 国家计算机网络与信息安全管理中心 基于沙箱技术的客户端蜜罐网页恶意代码检测方法与装置
CN102982282B (zh) * 2012-11-26 2015-12-23 北京神州绿盟信息安全科技股份有限公司 程序漏洞的检测系统和方法
CN103473171B (zh) * 2013-08-28 2016-06-08 北京信息科技大学 一种基于函数调用路径的覆盖率动态跟踪方法及装置
CN104765687B (zh) * 2015-04-10 2017-07-21 江西师范大学 基于对象跟踪和污点分析的j2ee程序漏洞检测方法
CN106411906A (zh) * 2016-10-10 2017-02-15 合肥红珊瑚软件服务有限公司 一种sql注入漏洞定位检测方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105653949A (zh) * 2014-11-17 2016-06-08 华为技术有限公司 一种恶意程序检测方法及装置
CN105939350A (zh) * 2016-05-30 2016-09-14 北京京东尚科信息技术有限公司 网络访问控制方法和系统
CN106101145A (zh) * 2016-08-10 2016-11-09 北京神州绿盟信息安全科技股份有限公司 一种网站漏洞检测方法及装置
CN106529286A (zh) * 2016-10-17 2017-03-22 杭州迪普科技股份有限公司 一种行为检测方法和装置
CN107315961A (zh) * 2017-07-11 2017-11-03 北京奇虎科技有限公司 程序漏洞检测方法及装置、计算设备、存储介质

Also Published As

Publication number Publication date
WO2019144548A1 (zh) 2019-08-01
CN108256322A (zh) 2018-07-06

Similar Documents

Publication Publication Date Title
CN108256322B (zh) 安全测试方法、装置、计算机设备和存储介质
CN108932426B (zh) 越权漏洞检测方法和装置
CN111400722B (zh) 扫描小程序的方法、装置、计算机设备和存储介质
CN113489713B (zh) 网络攻击的检测方法、装置、设备及存储介质
WO2019144549A1 (zh) 漏洞测试方法、装置、计算机设备和存储介质
CN110417778B (zh) 访问请求的处理方法和装置
US20180075233A1 (en) Systems and methods for agent-based detection of hacking attempts
CN109547426B (zh) 业务响应方法及服务器
KR101507469B1 (ko) 소스 코드 분석 서비스 제공 방법
CN112039900B (zh) 网络安全风险检测方法、系统、计算机设备和存储介质
CN108924258B (zh) 后台信息推送方法、装置、计算机设备和存储介质
CN108400978B (zh) 漏洞检测方法、装置、计算机设备和存储介质
CN111835737B (zh) 基于自动学习的web攻击防护方法、及其相关设备
CN109542764B (zh) 网页自动化测试方法、装置、计算机设备和存储介质
CN113472803A (zh) 漏洞攻击状态检测方法、装置、计算机设备和存储介质
CN115695043A (zh) 漏洞扫描攻击检测方法、模型训练方法及装置
CN111314326B (zh) Http漏洞扫描主机的确认方法、装置、设备及介质
CN112019544B (zh) 网络接口的安全扫描方法、装置及系统
CN110691090B (zh) 网站检测方法、装置、设备及存储介质
CN110516172B (zh) 资源调用方法、装置、计算机设备和存储介质
CN116776390A (zh) 一种数据泄漏行为的监测方法、装置、存储介质及设备
CN115935310A (zh) 登录页面中弱口令的检测方法、装置、设备和存储介质
CN110704218B (zh) 数据处理方法、装置、计算机设备和存储介质
CN111291044A (zh) 敏感数据识别方法、装置、电子设备及存储介质
KR20210076455A (ko) Xss 공격 검증 자동화 방법 및 그 장치

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
GR01 Patent grant
GR01 Patent grant