统一资源标识符URI数据的获取方法和装置、存储介质与流程

文档序号:20017308发布日期:2020-02-25 10:48阅读:256来源:国知局
统一资源标识符URI数据的获取方法和装置、存储介质与流程

本发明涉及计算机领域,具体而言,涉及一种统一资源标识符uri数据的获取方法和装置、存储介质。



背景技术:

当下,愈来愈多企业、团队开展敏捷开发实践,基于容器化技术的微服务和devops技术被广泛应用。每天有大量web服务代码变更发布,由此派生出大量新增uri,是攻击者主要探查的目标。提升带来“生产力”的同时,也给企业安全检查带来挑战。如何发现并理清uri资产,抢先于外部攻击者发现并排除安全风险,对每一家企业来说都至关重要。

业界广泛使用的安全测试方法是,动态安全扫描。它受两个主要因素影响:策略有效性、扫描时效性及覆盖度。策略有效性是指漏洞检测算法和规则,能否自动化发现所有场景下的同类漏洞;扫描时效性和覆盖度,主要由能否快速、完整收集web服务uri决定。当前,安全扫描使用的采集uri方式,依赖分析爬虫或用户产生http请求,无法完全满足高时效性和覆盖度要求。存在严重安全风险,因无法采集到uri,不能被快速发现和收敛,留下巨大安全隐患。

uri资产清单收集主要依托网络请求,按发起http请求来源不同,有两种主流方式,分别为:“主动式”和“被动式”。

主动式,依托网络爬虫主动发起探测请求的“由一到多”,解析出一条uri对应页面中包含的一系列超级链接。采用该种方式存有如下问题:第一,长期消耗机器、网络资源。为保证采集速度,在面向整个公司业务进行大规模采集过程中,往往需要大量机器,部署集群。且爬虫工作过程中需要发起大量http请求,消耗网络带宽资源。第二,时效性低,易受登陆态、验证码影响而失效。动态引擎渲染复杂页面耗时长,如果站点部署了对抗爬虫的验证码或需要特殊的登陆态(如:http头中的oauth验证字段、特殊的cookies),爬虫任务往往会中断,使相关uri无法采集。第三,不支持http响应内容纯文本的api站点。网络爬虫仅能从html页面中提取出更多的uri,天然受其工作原理限制。许多站点响应数据通常是纯文本类型,包括json、xml等,爬虫无法支持。

被动式:依赖在web服务器部署模块,被动收集客户端对服务器的请求日志,从中解析出站点uri资产清单。采用该种方式存有如下问题:一方面,时效性低。新业务上线,仅依赖来自客户端人工触发的请求,uri被采集到往往需要较长的周期,无法满足安全扫描的高时效性要求。另一方面,易覆盖不完整。冷门或旧业务的uri,在被人工触发前,较长一段时间内无法感知到,影响uri采集覆盖率。

针对上述的问题,目前尚未提出有效的解决方案。



技术实现要素:

本发明实施例提供了一种统一资源标识符uri数据的获取方法和装置、存储介质,以至少解决现有技术中,获取uri数据时效性差、完整性低的技术问题。

根据本发明实施例的一个方面,提供了一种统一资源标识符uri数据的获取方法,包括:在隔离镜像节点上获取所述隔离镜像节点上具有的web服务的程序语言和框架,其中,所述隔离镜像节点是在创建的web服务主节点启动所述web服务的情况下创建的与所述web服务主节点相同的节点;在所述隔离镜像节点上为所述web服务配置与所述web服务的程序语言和框架匹配的第一目标文件以及第二目标文件,其中,所述第一目标文件用于获取与所述web服务中预配置给目标对象的uri对应的uri文件,所述第二目标文件用于根据所述uri文件获取所述uri的uri参数;在所述隔离镜像节点上运行所述web服务的过程中通过所述第一目标文件和所述第二目标文件获取所述web服务中所述uri的uri参数;在所述隔离镜像节点上将所述uri参数传输给uri提取服务器,其中,所述uri提取服务器用于根据所述uri参数获取所述uri的待存入数据库的uri数据,并将所述uri数据存入所述数据库。

根据本发明实施例的另一方面,还提供了一种统一资源标识符uri数据的获取装置,包括:第一获取单元,用于在隔离镜像节点上获取所述隔离镜像节点上具有的web服务的程序语言和框架,其中,所述隔离镜像节点是在创建的web服务主节点启动所述web服务的情况下创建的与所述web服务主节点相同的节点;配置单元,用于在所述隔离镜像节点上为所述web服务配置与所述web服务的程序语言和框架匹配的第一目标文件以及第二目标文件,其中,所述第一目标文件用于获取与所述web服务中预配置给目标对象的uri对应的uri文件,所述第二目标文件用于根据所述uri文件获取所述uri的uri参数;第二获取单元,用于在所述隔离镜像节点上运行所述web服务的过程中通过所述第一目标文件和所述第二目标文件获取所述web服务中所述uri的uri参数;传输单元,用于在所述隔离镜像节点上将所述uri参数传输给uri提取服务器,其中,所述uri提取服务器用于根据所述uri参数获取所述uri的待存入数据库的uri数据,并将所述uri数据存入所述数据库。

根据本发明实施例的又一方面,还提供了一种计算机可读的存储介质,该计算机可读的存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述一种统一资源标识符uri数据的获取方法。

根据本发明实施例的又一方面,还提供了一种电子装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,上述处理器通过计算机程序执行上述的一种统一资源标识符uri数据的获取方法。

在本发明实施例中,通过在隔离镜像节点上获取隔离镜像节点上具有的web服务的程序语言和框架,其中,隔离镜像节点是在创建的web服务主节点启动web服务的情况下创建的与web服务主节点相同的节点;在隔离镜像节点上为web服务配置与web服务的程序语言和框架匹配的第一目标文件以及第二目标文件,其中,第一目标文件用于获取与web服务中预配置给目标对象的uri对应的uri文件,第二目标文件用于根据uri文件获取uri的uri参数;在隔离镜像节点上运行web服务的过程中通过第一目标文件和第二目标文件获取web服务中uri的uri参数;在隔离镜像节点上将uri参数传输给uri提取服务器,其中,uri提取服务器用于根据uri参数获取uri的待存入数据库的uri数据,并将uri数据存入数据库,达到了不影响节点正常运行的情况下,通过在隔离镜像节点实时获取uri数据,从而实现了实时、完整的获取web服务器中的uri数据的技术效果,进而解决了现有技术中,获取uri数据时效性差、完整性低的技术问题。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据本发明实施例的一种统一资源标识符uri数据的获取方法的流程图;

图2是根据本发明优选实施例的一种程序运行时动态提取web服务uri采集方法的结构流程图;

图3是根据本发明实施例的统一资源标识符uri数据的获取装置的示意图(一);

图4是根据本发明实施例的统一资源标识符uri数据的获取装置的示意图(二);

图5是根据本发明实施例的统一资源标识符uri数据的获取装置的示意图(三);

图6是根据本发明实施例的统一资源标识符uri数据的获取方法的电子装置的结构示意图。

具体实施方式

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

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

根据本发明实施例,还提供了一种统一资源标识符uri数据的获取方法的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

下面将对本发明实施例的一种统一资源标识符uri数据的获取方法进行详细说明。

图1是根据本发明实施例的一种统一资源标识符uri数据的获取方法的流程图,如图1所示,该方法包括如下步骤:

步骤s102,在隔离镜像节点上获取隔离镜像节点上具有的web服务的程序语言和框架,其中,隔离镜像节点是在创建的web服务主节点启动web服务的情况下创建的与web服务主节点相同的节点。

步骤s104,在隔离镜像节点上为web服务配置与web服务的程序语言和框架匹配的第一目标文件以及第二目标文件,其中,第一目标文件用于获取与web服务中预配置给目标对象的uri对应的uri文件,第二目标文件用于根据uri文件获取uri的uri参数。

步骤s106,在隔离镜像节点上运行web服务的过程中通过第一目标文件和第二目标文件获取web服务中uri的uri参数。

步骤s108,在隔离镜像节点上将uri参数传输给uri提取服务器,其中,uri提取服务器用于根据uri参数获取uri的待存入数据库的uri数据,并将uri数据存入数据库。

通过上述步骤,创建与web服务主节点相同的隔离镜像节点,在隔离镜像节点上配置与web服务的程序语言和框架匹配的用于获取目标对象的uri对应的uri文件的第一文件和用于获取uri的uri参数的第二文件,在隔离镜像节点上运行web服务的过程中通过第一目标文件和第二目标文件获取web服务中uri的uri参数,并将uri参数传输给uri提取服务器,uri提取服务器将uri参数存入数据库。即可以在与web服务主节点相同配置的隔离镜像节点中获取uri参数,达到了不影响正常节点运行的情况下,在隔离镜像节点实时获取uri数据,并将uri数据存入数据库的目的,从而实现了实时、完整的获取web服务器中的uri数据的技术效果,进而解决了现有技术中,获取uri数据时效性差、完整性低的技术问题。

还需说明的是,镜像隔离节点和主节点的代码和运行环境均相同,进而能在web服务启动运行极短时间内,通过在镜像节点中提取web服务涉及的全部有效uri,且不影响服务的正常运行。有助于满足uri采集的高时效性和完整性要求。

在步骤s102提供的方案中,在创建web服务主节点,启动web服务的情况下创建的与web服务主节点相同的节点,即镜像节点,并将该镜像节点与主节点隔离,进而在与主节点相同的隔离节点中提取uri,可以避免在主节点上提取uri时对主节点的影响,又因为镜像节点是主节点的镜像节点,因此可以在镜像节点上提取的uri是与主节点上的uri相同的。换句话说,在与主节点相同的镜像节点中提取uri,可以得到与在主节点提取uri相同得结果,同时又不影响主节点的正常运行。

在步骤s104提供的方案中,在隔离镜像节点上为web服务的程序语言匹配获取与所述web服务中预配置给目标对象的uri的uri文件的第一目标文件,以及根据所述uri文件获取所述uri的uri参数的第二目标文件。

在步骤s106中提供的方案中,web服务已启动就能获取所有的uri和uri参数,当然,uri参数也可以后续确定。

在步骤s108提供的方案中,在uri参数被包括在多个文件中的情况下,将多个文件进行压缩,得到目标压缩文件,将目标压缩文件传输给uri提取服务器;以及在将uri参数传输给uri提取服务器之后,在uri提取服务器上对目标压缩文件进行解压,得到多个文件,并根据多个文件中包括的uri参数获取uri的待存入数据库的uri数据;在uri提取服务器上将uri数据存入数据库。进而在uri参数包括在多个文件夹中通过将多个文件压缩,可以提高多个文件传输的速度。其中,在将多个文件压缩的过程中可以对文件进行加密,确保文件的安全性。

在实际应用中,第一目标文件和第二目标文件可以预先配置在目标扩展库中。第一目标文件可以用来获取目标对象的uri对应的uri文件,第一目标文件可以包括但不限于微服务管理平台的tsysapi;亦可以借助主机agent下发命令及文件依赖文件,例如:洋葱),根据特征识别隔离节点内服务对应的程序语言和框架。

第二目标文件与web服务的框架匹配,可以用来获取uri参数。例如,例如:nginx+php部署的web服务,使用改造后的nginx读取配置文件并解析出根目录和入口文件位置;接着解析入口文件内容,根据字符串特征检索。示例:“*laravel-aphpframeworkforwebartisans”可得php框架是laravel。

例如,使用node.js编写的服务,读取微服务管理平台接口取到根目录。读取根目录下package.json的“dependencies”字段,即可得到web服务主节点使用的框架及对应版本号。

作为一种可选的实施例,在隔离镜像节点上为web服务配置与web服务的程序语言和框架匹配的第一目标文件以及第二目标文件,可以包括如下方式:

方式一:在隔离镜像节点上获取程序语言的目标扩展库,其中,目标扩展库中包括第一目标文件和第二目标文件,与程序语言和框架匹配的第一目标文件和第二目标文件被预先配置在目标扩展库中。也就是说,第一目标文件和第二目标文件可以在目标扩展库中选取,进而节省创建第一目标文件和第二目标文件的时间。

例如,nginx+php部署的web服务,根据超文本预处理器php版本不同,下载对应的php扩展库。进而在扩展库中选取第一目标文件和第二目标文件。

方式二:在隔离镜像节点上获取用于提取uri的语法树解析包、和uri参数解析包,并将语法树解析包和uri参数解析包分别解压释放至目标目录下,其中,第二目标文件包括语法树解析包和uri参数解析包解压得到的文件;在隔离镜像节点上将框架中用于将uri预配置给目标对象的第三目标文件替换为第一目标文件。

在实际应用中,使用node.js编写的服务。首先,需要将uri提取所需的语法树解析包uglify-js、uri参数解析包,分别解压释放至‘/node_modules/’目录和根目录下。接着,按框架类型和版本,将原node.js框架中处理uri的核心文件,替换成改造过的文件。例如,express.js框架需要替换/node_modules/express/lib/application.js文件。向其中增加一个seclog方法,解析app.use中的router对象,实现在服务运行时,获取代码中定义的所有uri路由配置的功能。

需要说明的是,上述方式二中的在隔离镜像节点上将框架中用于将uri预配置给目标对象的第三目标文件替换为第一目标文件可以包括:在第三目标文件中增加第一目标代码,得到第一目标文件,其中,第一目标代码用于获取预配置给目标对象的uri以及获取uri的代码所在的uri文件的文件名和路径,第三目标文件中包括第二目标代码,第二目标代码用于将uri预配置给目标对象,uri文件包括路径上名称为文件名的文件。

在实际应用中,使用node.js编写的服务,读取微服务管理平台接口取到根目录。读取根目录下package.json的“dependencies”字段,即可得到web服务主节点使用的框架及对应版本号。

作为一种可选的实施例,在隔离镜像节点上运行web服务的过程中通过第一目标文件和第二目标文件获取web服务中uri的uri参数可以包括:在隔离镜像节点上运行web服务的过程中通过第一目标文件获取预配置给目标对象的uri对应的uri文件;通过第二目标文件对uri文件进行处理,得到uri的uri参数。

其中,uri参数可以包括但不限于:1)模块id;2)正式域名;3)测试域名;4)uri对应文件名及路径;5)容器名/节点名;6)请求方式;7)get参数;8)post参数;9)其他参数;10)uri对文件的信息摘要算法md5;11)采集时间。

需要说明的是,在隔离镜像节点上运行web服务的过程中通过第一目标文件获取预配置给目标对象的uri对应的uri文件可以包括:在隔离镜像节点上运行web服务的过程中运行第一目标文件中的第一目标代码,以获取预配置给目标对象的uri以及获取uri的代码所在的uri文件的文件名和路径。

还需要说明的是,通过第二目标文件对uri文件进行处理,得到uri的uri参数可以包括:在第二目标文件包括用于提取uri的语法树解析包、和uri参数解析包的情况下,通过语法树解析包和uri参数解析包对uri文件中的代码进行处理,得到第一组uri参数,其中,uri参数包括第一组uri参数。

需要说明的是,第一组uri参数可以包括:get、post和其他类型参数。

例如,在程序运行过程中,实时动态获取web服务控制uri的代码所在文件名和路径,以及代码映射出的、可被访问的全部uri及对应请求方式;接着,调用基于语法树(ast)的uri参数解析包,处理每条uri涉及的代码,得到与之对应的get、post和其他类型参数,分别写入本地文件。

作为一种可选的实施例,通过语法树解析包和uri参数解析包对uri文件中的代码进行处理,得到第一组uri参数可以包括:在运行第一目标文件中的第一目标代码的过程中调用语法树解析包和uri参数解析包对uri文件中的代码进行处理,得到第一组uri参数,其中,第一目标文件用于获取预配置给目标对象的uri以及获取uri的代码所在的uri文件的文件名和路径。

作为一种可选的实施例,在隔离镜像节点上运行web服务的过程中通过第一目标文件和第二目标文件获取web服务中uri的uri参数还可以包括:在隔离镜像节点上启动web服务之后立即运行第一目标文件中的代码,在第一目标文件中的代码运行的过程中、且在运行第一目标文件中的第一目标代码确定uri文件之后调用第二目标文件,以获取web服务中uri的uri参数。

作为一种可选的实施例,在将uri参数传输给uri提取服务器之后,方法还包括:在uri提取服务器将uri数据存入数据库之后,删除隔离镜像节点。进而节省存储空间,减少不必要的资源浪费。

结合上述实施例,本发明还提供了一种优选实施例,一种程序运行时动态提取web服务uri采集方法。

为了更好的理解本发明优选实施,解释如下内容:

1、uri,uniformresourceidentifier,统一资源标识符;

2、waf,webapplicationfirewall,网页应用防火墙;

3、devops,是一种软件开发方法,旨在帮助组织快速产出产品及服务。

4、容器技术,是一种虚拟化技术。通过对应用程序及其关联性进行隔离,构建起一套能够随处运行的自容纳单元。

5、微服务管理平台,提供一套业务上线流程,上线用户可以对容器升级、登陆、起停、扩缩容等等操作。

该优选实施例的核心思想是:通过嵌入微服务管理平台(以下简称“平台”),当用户执行发布操作,平台正常创建新容器节点并启动服务的同时,会通过平台扩容api镜像一份发布的节点,作为“隔离节点”(相当于隔离镜像节点)供动态提取uri使用。节点建立后,平台会在事件回调中通知uri提取服务端(以下简称“服务端”),即,部署本该实施例装置的服务器。接着,服务端调用平台的文件和命令下发通道,下发脚本识别隔离节点内服务对应的程序语言(如:php、java、node.js等),按识别结果下发并安装web服务uri运行时采集模块(通常是扩展和包的形式,例如:php扩展、node.js依赖包)。然后,在隔离节点内启动web服务,采集uri、参数、uri对应的文件名、路径和md5等信息,完成后,上报并通知服务端提取流程的结束状态。最后,服务端解析上报数据,通过节点名、模块id关联到web服务关联的域名,形成完整结果存储至数据库。同时,调用平台接口,使用“缩容”功能删除用于uri提取的“隔离节点”。至此,所有工序完成。

开发或安全策略人员可通过报表实时查询到提取结果,包括:1)模块id;2)正式域名;3)测试域名;4)uri对应文件名及路径;5)容器名/节点名;6)请求方式;7)get参数;8)post参数;9)其他参数;10)uri对应文件的信息摘要算法md5;11)采集时间。

图2是根据本发明优选实施的一种程序运行时动态提取web服务uri采集方法的结构流程图,如图2所示,该方法包括如下步骤:

步骤1,平台创建“隔离节点”,并触发uri提取工序;

通过与微服务管理平台(以下简称“平台”)联动,当用户执行发布web服务代码变更操作时,通过步骤1.1,平台新建节点,正常发布web服务代码并启动web服务主节点;通过骤1.2,平台也会通过“扩容”功能镜像复制一份发布的节点,作为“隔离节点”供动态提取uri使用。在实际应用中,可以通过触控操作扩容的功能按钮复制一份新的节点,还可以设置在平台中建立新节点就自动触发复制一份发布的节点。其中,该触控操作可以包括但不限于:点击、双击、长按等等。

需要说的是,在步骤1中借助基于容器化技术的管理平台能力,创建了与web服务主节点完全一致的隔离镜像节点,可杜绝安装提取模块、启动服务等uri提取操作导致生产环境的可能性。

步骤2,借助平台文件和命令下发通道,执行web程序语言及框架的识别程序;

在实际应用中,通过上述步骤2,借助平台中的文件,该文件接收下发命令,通过下发通道下发至隔离镜像节点,进而通过文件可以识别web服务的程序语言和web服务的框架。

步骤3,向服务端上报服务使用的程序语言和框架识别的结果;

需要说明的是,在上述步骤2和步骤3中,调用平台的命令执行通道下发并执行脚本(可以借助平台本身能力,例如:平台的tsysapi;亦可以借助主机agent下发命令及文件依赖文件,例如:洋葱),根据特征识别隔离节点内服务对应的程序语言和框架,并上报结果。

其中,不同程序语言、框架的识别特征和策略不同,包括但不限于:

a)解析webserver配置文件和入口文件。例如:nginx+php部署的web服务,首先使用改造后的nginx读取配置文件并解析出根目录和入口文件位置;接着解析入口文件内容,根据字符串特征检索。示例:“*laravel-aphpframeworkforwebartisans”可得php框架是laravel。

b)解析包管理配置文件。例如:使用node.js编写的服务,读取微服务管理平台接口取到根目录。读取根目录下package.json的“dependencies”字段,即可得到web服务主节点所使用的框架及对应版本号。

步骤4,按语言和框架类型下发不同的提取模块至节点的指定路径位置;

需要说明的是,在步骤4中,根据步骤2和步骤3中的识别结果,按节点上报的识别结果,安装针对不同程序语言和框架的web服务uri运行时采集模块,涉及本地文件替换、相关依赖包释放等操作。

根据程序语言、框架及版本,步骤4中可以包括但不限于:

a)下载兼容指定版本程序语言的扩展库。例如,nginx+php部署的web服务,根据php版本不同,下载对应的php扩展库。

b)释放依赖包至指定目录,并替换框架的核心文件。例如,使用node.js编写的服务。首先,需要将uri提取所需的语法树解析包uglify-js、uri参数解析包,分别解压释放至‘/node_modules/’目录和根目录下。接着,按框架类型和版本,将原node.js框架中处理uri的核心文件,替换成改造过的文件。例如,express.js框架需要替换/node_modules/express/lib/application.js文件。向其中增加一个seclog方法,解析app.use中的router对象,实现在服务运行时,获取代码中定义的所有uri路由配置的功能。使用的shell命令示例如下:

步骤5,执行提取脚本;

在步骤5中,在“隔离节点”容器内,使用命令行调起web服务,在程序运行过程中,实时动态获取web服务控制uri的代码所在文件名和路径。即根据提取脚本完成对web服务控制uri的代码所在文件名和路径的提取。

步骤6,通知服务端提取流程已结束并上报含uri、参数、文件路径等参数;

需要说的是,在步骤5完成后,可以通过步骤6通知服务端提取流程已结束,同时可以将提取的含uri、参数、文件路径等参数上报至服务端。进而服务器可以将参数存入数据库。

步骤7,包括步骤7.1和步骤7.2,其中,步骤7.1,根据回传结果,调用微服务管理平台的接口取到节点对应的正式、测试域名,形成最终采集结果,写入数据库;步骤7.2,调用微服务管理平台“缩容”接口;

需要说明的是,在步骤7中,在步骤7.1中,根据回传结果,调用微服务管理平台的接口取到节点对应的正式、测试域名,形成最终采集结果,写入数据库。包含:1)模块id;2)正式域名;3)测试域名;4)uri对应文件名及路径;5)容器名/节点名;6)请求方式;7)get参数;8)post参数;9)其他参数;10)uri对文件的信息摘要算法md5;11)采集时间。完成后,进入步骤7.2,调用微服务管理平台“缩容”接口。

步骤8,微服务管理平台根据uri提取服务端发送的“缩容”指令,删除用于uri提取的“隔离节点”。

也就是说,在不对web服务节点进行web漏洞扫描及扫描覆盖率检查时,可以将web服务主节点对应的隔离节点删除。删除的方式可以通过删除按钮进行一键进行删除,还可以设置在预定时间内没有启动web服务的情况下,自动将隔离节点删除。

通过上述步骤1步骤8,可以实现在本地环境、程序运行时动态提取web服务uri的工序结束。也就是说,uri提取服务端等完成存储就缩容。

该优选实施例,相对于现有技术可以带来以下益处:

1)相较原有基于网络爬虫、解析实时流量/请求日志等uri提取方式,能在web服务启动运行极短时间内,提取服务涉及的全部有效uri,且不影响服务的正常运行。有助于满足uri采集的高时效性和完整性要求。

2)相较现有方案,能将uri与本地代码准确关联起来,从而获取到更多有价值的信息,包括:uri对应的文件名、路径和md5,模块id、节点等。基于此,能实现精准的uri变动情况感知,进而方便制定更精细的扫描策略,提升漏洞扫描的速度和效果。

3)相较爬虫方案,能避免发送http请求,消耗网络带宽;且借助“缩、扩容”机制,也能优化资源消耗。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。

根据本发明实施例的另一个方面,还提供了一种用于实施上述统一资源标识符uri数据的获取方法的统一资源标识符uri数据的获取装置。如图3所示,本发明实施例的统一资源标识符uri数据的获取方法的统一资源标识符uri数据的获取装置示意图(一),该装置包括:第一获取单元31、配置单元33、第二获取单元35以及传输单元37。

第一获取单元31,用于在隔离镜像节点上获取隔离镜像节点上具有的web服务的程序语言和框架,其中,隔离镜像节点是在创建的web服务主节点启动web服务的情况下创建的与web服务主节点相同的节点。

配置单元33,用于在隔离镜像节点上为web服务配置与web服务的程序语言和框架匹配的第一目标文件以及第二目标文件,其中,第一目标文件用于获取与web服务中预配置给目标对象的uri对应的uri文件,第二目标文件用于根据uri文件获取uri的uri参数。

第二获取单元35,用于在隔离镜像节点上运行web服务的过程中通过第一目标文件和第二目标文件获取web服务中uri的uri参数。

传输单元37,用于在隔离镜像节点上将uri参数传输给uri提取服务器,其中,uri提取服务器用于根据uri参数获取uri的待存入数据库的uri数据,并将uri数据存入数据库。

其中,上述传输单元37还可以包括:传输模块,用于在uri参数被包括在多个文件中的情况下,将多个文件进行压缩,得到目标压缩文件,将目标压缩文件传输给uri提取服务器。

通过上述装置,第一获取单元31在隔离镜像节点上获取隔离镜像节点上具有的web服务的程序语言和框架,其中,隔离镜像节点是在创建的web服务主节点启动web服务的情况下创建的与web服务主节点相同的节点;配置单元33在隔离镜像节点上为web服务配置与web服务的程序语言和框架匹配的第一目标文件以及第二目标文件,其中,第一目标文件用于获取与web服务中预配置给目标对象的uri对应的uri文件,第二目标文件用于根据uri文件获取uri的uri参数;第二获取单元35在隔离镜像节点上运行web服务的过程中通过第一目标文件和第二目标文件获取web服务中uri的uri参数;传输单元37在隔离镜像节点上将uri参数传输给uri提取服务器,其中,uri提取服务器用于根据uri参数获取uri的待存入数据库的uri数据,并将uri数据存入数据库。达到了不影响节点正常运行的情况下,通过在隔离镜像节点实时获取uri数据,从而实现了实时、完整的获取web服务器中的uri数据的技术效果,进而解决了现有技术中,获取uri数据时效性差、完整性低的技术问题。

作为一种可选的实施例,上述配置单元33可以包括:第一获取模块,用于在隔离镜像节点上获取程序语言的目标扩展库,其中,目标扩展库中包括第一目标文件和第二目标文件,与程序语言和框架匹配的第一目标文件和第二目标文件被预先配置在目标扩展库中。

作为一种可选的实施例,上述配置单元33还可以包括:第二获取模块,用于在隔离镜像节点上获取用于提取uri的语法树解析包、和uri参数解析包,并将语法树解析包和uri参数解析包分别解压释放至目标目录下,其中,第二目标文件包括语法树解析包和uri参数解析包解压得到的文件;替换模块,用于在隔离镜像节点上将框架中用于将uri预配置给目标对象的第三目标文件替换为第一目标文件。

需要说明的是,上述替换模块可以包括:增加子模块,用于在第三目标文件中增加第一目标代码,得到第一目标文件,其中,第一目标代码用于获取预配置给目标对象的uri以及获取uri的代码所在的uri文件的文件名和路径,第三目标文件中包括第二目标代码,第二目标代码用于将uri预配置给目标对象,uri文件包括路径上名称为文件名的文件。

作为一种可选的实施例,上述第二获取单元35可以包括:第三获取模块,用于在隔离镜像节点上运行web服务的过程中通过第一目标文件获取预配置给目标对象的uri对应的uri文件;处理模块,用于通过第二目标文件对uri文件进行处理,得到uri的uri参数。

需要说明的是,上述第三获取模块可以包括:获取子模块,用于在隔离镜像节点上运行web服务的过程中运行第一目标文件中的第一目标代码,以获取预配置给目标对象的uri以及获取uri的代码所在的uri文件的文件名和路径。

还需要说明的是,上述处理模块可以包括:处理子模块,用于在第二目标文件包括用于提取uri的语法树解析包、和uri参数解析包的情况下,通过语法树解析包和uri参数解析包对uri文件中的代码进行处理,得到第一组uri参数,其中,uri参数包括第一组uri参数。

其中,处理子模块还用于:在运行第一目标文件中的第一目标代码的过程中调用语法树解析包和uri参数解析包对uri文件中的代码进行处理,得到第一组uri参数,其中,第一目标文件用于获取预配置给目标对象的uri以及获取uri的代码所在的uri文件的文件名和路径。

作为一种可选的实施例,上述第二获取单元35还可以包括:调用模块,用于在隔离镜像节点上启动web服务之后立即运行第一目标文件中的代码,在第一目标文件中的代码运行的过程中、且在运行第一目标文件中的第一目标代码确定uri文件之后调用第二目标文件,以获取web服务中uri的uri参数。

作为一种可选的实施例,图4是根据本发明实施例的统一资源标识符uri数据的获取方法装置的示意图(二),如图4所示,该装置可以包括:删除单元39。

删除单元39,用于在将uri参数传输给uri提取服务器之后,在uri提取服务器将uri数据存入数据库之后,删除隔离镜像节点。进而释放平台的空间。

作为一种可选的实施例,图5是根据本发明实施例的统一资源标识符uri数据的获取方法装置的示意图(三),如图5所示,该装置还可以包括:存入单元311。

存入单元311,用于在将uri参数传输给uri提取服务器之后,在uri提取服务器上对目标压缩文件进行解压,得到多个文件,并根据多个文件中包括的uri参数获取uri的待存入数据库的uri数据;在uri提取服务器上将uri数据存入数据库。

根据本发明实施例的又一个方面,还提供了一种用于实施上述统一资源标识符uri数据的获取方法的电子装置,如图6所示,该电子装置包括存储器602和处理器604,该存储器602中存储有计算机程序,该处理器604被设置为通过计算机程序执行上述任一项方法实施例中的步骤。

可选地,在本实施例中,上述电子装置可以位于计算机网络的多个网络设备中的至少一个网络设备。

可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:

s1,在隔离镜像节点上获取隔离镜像节点上具有的web服务的程序语言和框架,其中,隔离镜像节点是在创建的web服务主节点启动web服务的情况下创建的与web服务主节点相同的节点;

s2,在隔离镜像节点上为web服务配置与web服务的程序语言和框架匹配的第一目标文件以及第二目标文件,其中,第一目标文件用于获取与web服务中预配置给目标对象的uri对应的uri文件,第二目标文件用于根据uri文件获取uri的uri参数;

s3,在隔离镜像节点上运行web服务的过程中通过第一目标文件和第二目标文件获取web服务中uri的uri参数;

s4,在隔离镜像节点上将uri参数传输给uri提取服务器,其中,uri提取服务器用于根据uri参数获取uri的待存入数据库的uri数据,并将uri数据存入数据库。

可选地,本领域普通技术人员可以理解,图6所示的结构仅为示意,电子装置也可以是智能手机(如android手机、ios手机等)、平板电脑、掌上电脑以及移动互联网设备(mobileinternetdevices,mid)、pad等终端设备。图6其并不对上述电子装置的结构造成限定。例如,电子装置还可包括比图6中所示更多或者更少的组件(如网络接口等),或者具有与图6所示不同的配置。

其中,存储器602可用于存储软件程序以及模块,如本发明实施例中的统一资源标识符uri数据的获取方法和装置对应的程序指令/模块,处理器604通过运行存储在存储器602内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的统一资源标识符uri数据的获取方法。存储器602可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器602可进一步包括相对于处理器604远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。其中,存储器602具体可以但不限于用于统一资源标识符uri数据等信息。作为一种示例,如图6所示,上述存储器602中可以但不限于包括上述统一资源标识符uri数据的获取装置中的第一获取单元31、配置单元33、第二获取单元35以及传输单元37。此外,还可以包括但不限于上述统一资源标识符uri数据的获取装置中的其他模块单元,本示例中不再赘述。

可选地,上述的传输装置606用于经由一个网络接收或者发送数据。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置706包括一个网络适配器(networkinterfacecontroller,nic),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置606为射频(radiofrequency,rf)模块,其用于通过无线方式与互联网进行通讯。

此外,上述电子装置还包括:删除单元39,用于在将uri参数传输给uri提取服务器之后,在uri提取服务器将uri数据存入数据库之后,删除隔离镜像节点。进而释放平台的空间;和存入单元311,用于在将uri参数传输给uri提取服务器之后,在uri提取服务器上对目标压缩文件进行解压,得到多个文件,并根据多个文件中包括的uri参数获取uri的待存入数据库的uri数据;在uri提取服务器上将uri数据存入数据库。

根据本发明的实施例的又一方面,还提供了一种计算机可读的存储介质,该计算机可读的存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。

可选地,在本实施例中,上述计算机可读的存储介质可以被设置为存储用于执行以下步骤的计算机程序:

s1,在隔离镜像节点上获取隔离镜像节点上具有的web服务的程序语言和框架,其中,隔离镜像节点是在创建的web服务主节点启动web服务的情况下创建的与web服务主节点相同的节点;

s2,在隔离镜像节点上为web服务配置与web服务的程序语言和框架匹配的第一目标文件以及第二目标文件,其中,第一目标文件用于获取与web服务中预配置给目标对象的uri对应的uri文件,第二目标文件用于根据uri文件获取uri的uri参数;

s3,在隔离镜像节点上运行web服务的过程中通过第一目标文件和第二目标文件获取web服务中uri的uri参数;

s4,在隔离镜像节点上将uri参数传输给uri提取服务器,其中,uri提取服务器用于根据uri参数获取uri的待存入数据库的uri数据,并将uri数据存入数据库。

可选地,在本实施例中,本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(read-onlymemory,rom)、随机存取器(randomaccessmemory,ram)、磁盘或光盘等。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。

在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

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