CN113806647A - 识别开发框架的方法及相关设备 - Google Patents
识别开发框架的方法及相关设备 Download PDFInfo
- Publication number
- CN113806647A CN113806647A CN202010540068.4A CN202010540068A CN113806647A CN 113806647 A CN113806647 A CN 113806647A CN 202010540068 A CN202010540068 A CN 202010540068A CN 113806647 A CN113806647 A CN 113806647A
- Authority
- CN
- China
- Prior art keywords
- character string
- website
- directory tree
- characteristic
- target website
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/955—Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
- G06F16/9566—URL specific, e.g. using aliases, detecting broken or misspelled links
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90344—Query processing by using string matching techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请的实施例提供了一种识别开发框架的方法及相关设备,该方法包括:获取目标网站的目录树,所述目录树是根据所述目标网站的分级字符串构建的,所述分级字符串是对所述目标网站下页面的URL进行切分得到的;从所述目录树中提取得到所述目标网站对应的特征字符串;根据所述特征字符串识别开发所述目标网站所利用的开发框架。通过从目标网站的目录树中所提取的表征开发框架的特征字符串,实现了开发目标网站所利用的开发框架的快速识别。
Description
技术领域
本申请涉及计算机技术领域,具体而言,涉及一种识别开发框架的方法及相关设备。
背景技术
网站漏洞扫描一般需要根据不同的开发框架采用与开发框架对应的漏洞扫描工具进行扫描。如果在对网站进行漏洞扫描之前未识别确定开发该网站所利用的开发框架,可能导致漏洞扫描的时间长,效率低。相关技术中并未提供可以识别开发框架的方案。
发明内容
本申请的实施例提供了一种识别开发框架的方法及相关设备,进而至少在一定程度上可以实现快速识别开发框架。
本申请的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本申请的实践而习得。
根据本申请实施例的一个方面,提供了一种识别开发框架的方法,包括:获取目标网站的目录树,所述目录树是根据所述目标网站的分级字符串构建的,所述分级字符串是对所述目标网站下页面的URL进行切分得到的;从所述目录树中提取得到所述目标网站对应的特征字符串;根据所述特征字符串识别开发所述目标网站所利用的开发框架。
根据本申请实施例的一个方面,提供了一种识别开发框架的装置,所述装置包括:目录树获取模块,用于获取目标网站的目录树,所述目录树是根据所述目标网站的分级字符串构建的,所述分级字符串是对所述目标网站下页面的URL进行切分得到的;特征提取模块,用于从所述目录树中提取得到所述目标网站对应的特征字符串;识别模块,用于根据所述特征字符串识别开发所述目标网站所利用的开发框架。
在本申请的一些实施例中,基于前述方案,识别模块包括:匹配单元,用于根据所述特征字符串在配置文件中进行字符串匹配,确定与所述特征字符串相对应的特征字符串集合;确定单元,用于将所述特征字符串集合所关联框架标识指示的开发框架确定为开发所述目标网站所利用的开发框架。
在本申请的一些实施例中,基于前述方案,识别开发框架的装置还包括:第一目录树获取模块,用于获取多个样本网站所分别对应的第一目录树,以及每一样本网站所对应开发框架的框架标识;第一特征字符串确定模块,用于针对每一样本网站,根据所述第一目录树,确定所述样本网站对应的第一特征字符串;特征字符串集合确定模块,用于根据所述样本网站对应的第一特征字符串和所述样本网站所对应的框架标识,确定对应于每一开发框架的特征字符串集合;关联模块,用于将所述特征字符串集合和所对应开发框架的框架标识相关联,得到所述配置文件。
在本申请的一些实施例中,基于前述方案,第一特征字符串确定模块包括:统计单元,用于统计在所述样本网站所对应第一目录树中各分级字符串的出现次数;第一分级字符串确定单元,用于根据所统计的出现次数,确定在所述第一目录树中出现次数超过第一阈值的第一分级字符串;通用字符串过滤单元,用于过滤所述第一分级字符串中的通用字符串,得到所述样本网站对应的区别字符串;第一特征字符串确定单元,用于根据所述区别字符串确定所述样本网站对应的第一特征字符串。
在本申请的一些实施例中,基于前述方案,第一特征字符串确定单元被配置为:以所述区别字符串作为所述样本网站对应的第一特征字符串。
在本申请的一些实施例中,基于前述方案,所述区别字符串至少为两个,第一特征字符串确定单元被配置为:对至少两个所述区别字符串进行组合得到组合字符串;统计所述组合字符串中所包括的区别字符串在所述样本网站对应的第一目录树中组合出现的组合出现次数;将组合出现次数满足设定次数要求的组合字符串作为所述样本网站对应的第一特征字符串。
在本申请的一些实施例中,基于前述方案,特征字符串集合确定模块,包括:分类单元,用于按照框架标识对所述第一特征字符串进行分类,得到对应于每一开发框架的初始特征字符串集合;排序单元,用于根据所述初始特征字符串集合中第一特征字符串所关联样本网站的数量由大到小的顺序,对所述初始特征字符串集合中的第一特征字符串进行排序;获取单元,用于获取所述初始特征集合中排序位于前设定数量的第一特征字符串;特征字符串集合确定单元,用于将所获取的所述第一特征字符串作为所对应开发框架的特征字符串集合中的元素。
在本申请的一些实施例中,基于前述方案,识别开发框架的装置还包括:访问数据获取模块,用于获取针对所述目标网站的访问数据,所述访问数据包括多个访问记录,所述访问记录包括所访问所述目标网站下页面的URL;路径切分模块,用于按照所述URL中的分隔符,对所述URL中的标识字符段进行切分,得到若干分级字符串;目录树构建模块,用于根据所述URL中的分级字符串构建所述目标网站的目录树。
在本申请的一些实施例中,基于前述方案,目录树构建模块,包括:子路径确定单元,用于根据对所述URL中的标识字符段所进行的切分,确定所述URL中的子路径,所述子路径的路径起点是所述URL中的一级路径;出现次数统计单元,用于统计每一子路径在所述访问数据中的出现次数,以确定出现次数大于第二阈值的第一子路径;写入单元,用于按照所述第一子路径中各分级字符串的位置,将所述第一路径中的分级字符串写入所述目标网站所对应目录树中对应的树节点。
在本申请的一些实施例中,基于前述方案,识别开发框架的装置还包括:新增访问数据获取模块,用于获取为所述目标网站采集的新增访问数据;第二目录树构建模块,用于根据所述新增访问数据为所述目标网站构建第二目录树;合并模块,用于将所述第二目录树合并至所述目录树中,以对所述目录树进行更新。
根据本申请实施例的一个方面,提供了一种电子设备,包括:处理器;及存储器,所述存储器上存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,实现上述识别开发框架的方法。
根据本申请实施例的一个方面,提供了一种计算机可读存储介质,其上存储有计算机可读指令,当所述计算机可读指令被处理器执行时,实现上述识别开发框架的方法。
在本申请所提供的技术方案中,基于目标网站的URL与开发框架之间的关联性,根据目标网站下URL中的分级字符串构建目标网站的目录树,然后从目标网站的目录树中提取可以目标网站对应的特征字符串,进而根据特征字符串来识别确定开发该目标网站所利用的开发框架,实现了开发框架的快速识别。
而且,在识别确定开发目标网站所利用的开发框架后,可以对应确定适配于该开发框架的扫描工具对目标网站进行漏洞扫描。由于在进行漏洞扫描之前并不需要尝试多种扫描工具,以确定适配于目标网站的扫描工具,从而,大幅缩短了漏洞扫描所花费的时间,有效提高了漏洞扫描的效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
在附图中:
图1示出了可以应用本申请实施例的技术方案的示例性系统架构的示意图;
图2是根据一个实施例示出的识别开发框架的方法的流程图;
图3是图2对应实施例中步骤250在一实施例中的流程图;
图4是根据一实施例示出的步骤310之前步骤在一实施例中的流程图;
图5是图4对应实施例的步骤430在一实施例中的流程图;
图6是图4对应实施例的步骤450在一实施例中的流程图;
图7是图2对应实施例的步骤210之前步骤在一实施例中的流程图;
图8是图7对应实施例的步骤750在一实施例中的流程图;
图9是图7对应实施例的步骤750之后步骤在一实施例中的流程图;
图10是根据一具体实施例示出的识别开发框架的方法的流程图;
图11是在一具体实施例中为域名所构建目录树的示意图;
图12是根据一实施例示出的漏洞扫描方法的流程图;
图13是根据一实施例示出的识别开发框架的装置的框图;
图14是是根据一实施例示出的漏洞扫描装置的框图;
图15示出了适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本申请将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本申请的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本申请的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本申请的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
图1示出了可以应用本申请实施例的技术方案的示例性系统架构的示意图。
如图1所示,系统架构可以包括终端设备(如图1中所示智能手机101、平板电脑102和便携式计算机103中的一种或多种,当然也可以是台式计算机等等)、网络104和服务器105。网络104用以在终端设备和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线通信链路、无线通信链路等等。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。比如服务器105可以是多个服务器组成的服务器集群等。
在本申请的一个实施例中,服务器105可以根据各个终端设备被触发对目标网站下页面的访问,收集得到目标网站的访问数据,以此根据目标网站的访问数据来构建目标网站的目录树,进而根据目标网站的目录树来按照本申请识别开发框架的方法来识别开发目标网站所利用的开发框架。
在本申请的一个实施例中,服务器105在识别确定开发目标网站所利用的开发框架后,还可以进一步确定与开发目标网站所利用的开发框架相适配的漏洞扫描工具,并通过该与开发框架相适配的漏洞扫描工具对目标网站进行漏洞扫描。
在本申请的一个实施例中,服务器105在识别确定开发目标网站所利用的开发框架后,还可以生成指示信息,并将该指示信息发送至用户所在的终端设备,其中该指示信息用于指示服务器105所识别确定开发目标网站所利用的开发框架。然后,由用户在终端设备中根据指示信息所指示的开发框架进行漏洞扫描工具的选择,进而,由服务端根据用户所选择的漏洞扫描工具对目标网站进行漏洞扫描。
需要说明的是,本申请所提供的识别开发框架的方法、以及漏洞扫描方法一般由服务器105执行,相应地,识别开发框架的装置、漏洞扫描装置一般设置于服务器105中。但是,在本申请的其它实施例中,终端设备也可以与服务器具有相似的功能,从而实现本申请所提供的识别开发框架的方法或漏洞扫描方法。
以下对本申请实施例的技术方案的实现细节进行详细阐述:
图2是根据一个实施例示出的识别开发框架的方法的流程图,该识别开发框架的方法可以由具有计算处理功能的设备来执行,比如可以由图1中所示的服务器105来执行。参照图2所示,该识别开发框架的方法至少包括步骤210至步骤250,详细介绍如下:
步骤210,获取目标网站的目录树,目录树是根据目标网站的分级字符串构建的,分级字符串是对目标网站下页面的URL进行切分得到的。
本申请所涉及的网站,如上述的目标网站和下文中的样本网站是指基于开发框架所开发得到的网站。其中,目标网站并不特征某一网站,而是泛指待识别确定所对应开发框架的网站。
开发框架是可复用的设计构件,它规定了应用程序的体系结构,阐明了整个设计、协作构件之间的依赖关系、责任分配和控制流程,表现为一组抽象类以及其实例之间协作的方法(即一组抽象构件及构件实例间交互的方法),它为构件复用提供了上下文关系。
开发框架实现了通用完备功能(除去特殊应用的部分)的底层服务,使用开发框架的开发人员可以在一个通用功能已经实现的基础上开始具体的应用开发。开发框架提供了应用所期望的默认行为的类集合,具体的应用通过重写子类(该子类属于开发框架的默认行为)或组装对象来支持应用专用的行为,该类集合包括多个综合性的面向对象的可重用类,这些类包括:接口、抽象类和具体类等。鉴于开发框架所提供实现基础性功能的类库,利用开发框架进行网站开发可以提高开发效率和保证网站质量。
对于网站而言,其包括多个页面,每一页面有其对应的URL。页面的URL(UniformResource Locator,统一资源定位符),又可以称为页面的网址,其由一串简单的字符构成,页面的URL指明了该页面在互联网中的位置。
其中,目标网站下各页面的URL是在通过开发框架进行目标网站开发过程中确定的。具体来说,开发框架中提供了URL生成工具,在开发过程中,借助于该URL生成工具来生成页面的URL。
举例来说,在Yii2开发框架中内置了URL管理器,即urlManager来为页面生成URL。又例如,Laravel开发框架中提供了URL辅助函数来为页面生成URL。上述所列举Yii2开发框架中的urlManager和Laravel开发框架中的URL辅助函数视为开发框架中所提供的URL生成工具。
可以理解的是,由于在网站开发过程中是借助于开发框架中的URL生成工具来生成页面的URL,开发框架所生成的URL可以体现该开发框架的特点,开发框架所生成的URL与该开发框架之间存在关联性,从而,所生成的URL在一定程度上可以反映生成该URL的开发框架,对应的,目标网站下页面的URL可以反映开发该目标网站所利用的开发框架。
基于目标网站下URL与开发框架之间的关联性,提出了以目标网站下各页面的URL为基础,来识别开发该目标网站所利用的开发框架的方案。
其中,URL的格式为:schema://host:port/path?query#fragment。具体的,schema部分为协议字符段,用于指示获取到所对应页面所采用的传输协议,例如HTTP协议(Hypertext transfer protocol,超文本传输协议)、HTTPS(Hypertext TransferProtocol over Secure Socket Layer)协议等。
host部分为域名字符段,其用于指示页面所对应服务器的地址,具体的,域名字符段可以是域名或者IP地址(Internet Protocol Address,互联网协议地址)。
port部分为端口字符段,其用于指示网络逻辑端口,不同网络协议有其特定的端口号,例如http协议的端口号为80。一般地,port部分在URL中可以省略。
path部分为路径字符段,其用于指示页面在网络中存储位置的完整路径,在指示路径的字符串中可能包括两级以上的路径,而每一级路径之间通过“/”进行分级,而且,路径字符段也是以“/”作为开始标识。在路径字符段中,其最后一级路径为文件名字符串,文件字符串至少用于指示页面所在文件的文件名,进一步的,文件名字符串还可以进一步包括文件后缀名。
query部分为参数字符段,其用于指示向服务端所传送的参数,例如,所传送用户输入的检索词。其中,在一URL中的参数字符段中可以包括多个参数,参数与参数之间以“&”作为分隔符。在URL中,参数字符段以“?”作为开始标识。
fragment部分为片段字符段,其用于指示页面的锚点。在URL中,片段字符段以“#”作为开始标识。在请求页面的过程中,该片段字符段不需要传送到服务端,在页面浏览的过程中,随着在页面上停留位置的不同,URL中的片段字符段可能发生变化。因此,锚点一般用于在前端进行页面定位。
举例来说,若一页面的URL为:http://www.aspxfans.com:8080/news/index.asp?boardID=5&ID=24618&page=1#name。对于该URL,其中“http”为协议字符段,www.aspxfans.com为域名字符段,“8080”为端口字符段,“boardID=5&ID=24618&page=1”为参数字符段,“name”为片段字符段。“news/index.asp”为路径字符段,其中“news”为一级路径,“index.asp”为二级路径,在该二级路径中,“index”为文件名,“.asp”为后缀名。
值得一的是,并不是每一页面的URL均包括以上所示的组成部分,例如,腾讯网的主页的URL为:https://www.qq.com,其仅包括协议字符段和域名字符段;又例如,一页面的URL为:http://www.infzm.com/contents/183166,可以看出该页面的URL中包括协议字符段“http”、域名字符段“www.infzm.com”和路径字符段“contents/183166”,而并不包括端口字符段、参数字符段和片段字符段。对于页面而言,其URL中的必须的组成部分包括协议字符段和域名字符段。
如上所描述,开发框架所生成的URL可以体现该开发框架的特点,而页面的URL自身的特征是通过URL中所包括的字符串来体现,因此,也可以理解为:开发框架所生成的URL通过URL中的字符串来体现开发框架的特点。
在此基础上,为了提高识别开发框架的效率和有效性,对目标框架下页面的URL进行切分,得到分级字符串,以在目标网站下的多个分级字符串中确定可以表征目标网站所对应的开发框架的字符串。
如上的描述,协议字符段与域名字符段通过“//”分隔,域名字符段与端口字符段通过“:”分隔,参数字符段以“?”作为开始标识,片段字符段以“#”作为开始标识,路径字符段以“/”作为开始标识,并且各级路径之间通过“/”进行分级,因此,可以将上述所列举“//”、“:”、“?”、“#”、“/”作为分隔符,对URL进行切分,得到该URL中的分级字符串。
在本申请中,在对目标网站下页面的URL进行切分得到分级字符串后,进一步为该目标网站构建目录树,以此通过目标网站的目录树来反映目标网站中的分级字符串的情况。
对于目标网站而言,获取页面所需要遵循的传输协议是行业标准,目标网站的域名以及IP地址是经申请注册得到的,请求获得目标网站下页面的端口取决于选用的传输协议,因此,同一目标网站下各页面的URL中所包括协议字符段和域名字符段对应相同,当然,如果未省略端口字符段,各页面的URL中的端口字符段也是相同的。由此也可以看出:页面的URL中的协议字符串、服务器地址字符串和端口字符串并不能体现出开发该目标网站所利用的开发框架之间的关联性。
那么,该目标网站下页面的URL之间的差异通过URL中从路径字符段以及其后字符段来体现,并且,也正是由URL中从路径字符段以及其后字符段来体现该URL与开发框架之间的关联性。因此,为了创建目标网站的目录树,可以在建立根节点后,将从各URL中路径字符段以及其后字符段中所提取到的分级字符串作为根节点下各个树节点对应的内容,以此来构建目标网站对应的目录树。
在一URL中,各个分级字符串的位置有对应的前后顺序,因此,为了构建目标网站的目录树,预先设定URL中字符串所在位置与目录树中树节点的对应关系,然后,按照URL中各个分级字符串位置的前后顺序,将各个分级字符串顺次写入对应的树节点。
步骤230,从目录树中提取得到目标网站对应的特征字符串。
目标网站对应的特征字符串是指目标网站中用于表征开发目标网站所利用开发框架的分级字符串。可以理解的是,目标网站对应的特征字符串可以体现目标网站下各URL的共性特征,从而,表明该特征字符串在该目标网站下的URL中具有普遍性。其中,为目标网站所提取得到的特征字符串的数量不限,可以是一个也可以是多个。
在本申请的一实施例中,可以根据分级字符串在目录树中的出现次数来确定特征字符串。一般的,若一分级字符串在目录树中的出现次数越高,表明该分级字符串在目录树中所占据的树节点的数量越多,进一步表明该分级字符串与开发目标网站所利用开发框架之间的关联性越高,进而说明该分级字符串更能反映该目标网站所对应的开发框架。
鉴于此,可以根据各个分级字符串在目录树中的出现次数来对应将出现次数满足设定要求的分级字符串作为目标网站对应的特征字符串,例如统计各个分级字符串在目录树中的出现次数,然后按照出现次数由大到小进行排序,将排序中位于前设定数量个的分级字符串作为目标网站对应的特征字符串。
值得一提的是,各个开发框架所开发得到网站中页面的URL中,可能存在一些通用字符串,例如image、plugin、default,这些通用字符串在各个开发框架所开发得到网站中页面的URL中出现的频率较高,对应的,该部分通用字符串可能在目标网站所对应的目录树中的出现次数也可能较高。因此,为了避免该部分通用字符串影响识别开发框架的准确度,在确定目录树中出现次数满足设定要求的分级字符串的基础上,将该出现次数满足设定要求的分级字符串中所包括的通用字符串过滤掉,并将过滤后剩下的分级字符串作为目标网站对应的特征字符串。
在本申请的另一实施例中,还可以根据分级字符串在开发框架中的出现次数和为目录树中各级树节点配置的权重来确定特征字符串。具体的,根据URL中各位置可能出现特征字符串的概率,基于URL中位置与目录树中树节点之间的对应关系,预先为每一级树节点配置权重。在此基础上,对于一分级字符串,统计该分级字符串在各级树节点的出现次数,将该分级字符串在每一级树节点的出现次数和该级树节点的权重进行加权,得到该分级字符串的加权次数。然后根据加权次数来确定目标网站对应的特征字符串,例如将各分级字符串对应的加权次数由大到小进行排序,将排序中位于前设定数量的分级字符串作为目标网站所对应的特征字符串。
在本申请的另一实施例中,在确定目录树中出现次数满足设定要求的分级字符串并将其中所包括的通用字符串过滤掉,还可以将过滤后剩下的分级字符串进行组合,以将组合得到的组合字符串作为目标网站对应的特征字符串。
步骤250,根据特征字符串识别开发目标网站所利用的开发框架。
由于所提取得到的特征字符串表征了开发目标网站所利用开发框架,因此,该特征字符串可以作为开发框架的一标识特征,来对应识别开发该目标网站所利用的开发框架。
在本申请的方案中,基于目标网站的URL与开发框架之间的关联性,根据目标网站下URL中的分级字符串构建目标网站的目录树,然后从目标网站的目录树中提取可以目标网站对应的特征字符串,进而根据特征字符串来识别确定开发该目标网站所利用的开发框架,实现了开发框架的快速识别。由此,后续若需要对该目标网站进行漏洞扫描,则可以对应选用适配于该开发框架的漏洞扫描工具,从而使漏洞扫描更有针对性,并提高了漏洞扫描的效率。
在本申请的一个实施例中,如图3所示,步骤250,包括:
步骤310,根据特征字符串在配置文件中进行字符串匹配,确定与特征字符串相对应的特征字符串集合。
特征字符串集合中的字符串作为识别该特征字符串集合所关联的开发框架的特征标识。该配置文件中包括对应于每一开发框架的特征字符串集合,以此为基础,来识别开发框架。
所进行的字符串匹配是指将特征字符串与配置文件中的特征字符串集合中的字符串进行匹配。
确定与特征字符串相对应的特征字符串集合,是按照设定的对应规则来进行。该对应规则可以是:(1)若特征字符串集合存在与该特征字符串相同的字符串,则将该特征字符串视为与该特征字符串相对应的特征字符串集合。
如上所描述,同一目标网站的特征字符串可以是多个,因此,可能存在如下情况:
情况I、在一特征字符串集合中包括与特征字符串相同的至少两个字符串。
情况II、在存在至少两个特征字符串集合,其中每一个特征字符串集合中均存在与特征字符串相同的字符串。
在上述情况I和II中,对应规则还可以是:若一特征字符串集合中所存在与特征字符串相同的字符串的数量满足第一设定要求,则将该特征字符串集合作为与特征字符串相对应的特征字符串集合。对于上述情况I,该第一设定要求可以是与特征字符串相同的字符串数量≥N(N为正整数)。在上述情况II中,该第一设定要求还可以是与特征字符串相同的字符串的数量位于排序中前M个(M为≥1的正整数),其中该排序是按照与特征字符串相同的字符串的数量由大到小的顺序排序。
由于目标网站的特征字符串可能为多个,则步骤310中所确定与特征字符串相对应的特征字符串集合也可能为多个。举例来说,目标网站的特征字符串包括特征字符串A和特征字符串B,通过在配置文件中进行字符串匹配,确定在特征字符串集合P中存在与特征字符串A相同的字符串,在特征字符串集合Q中存在与特征字符串B相同的字符串,若设定的对应规则为上述(1)中的规则,则特征字符串集合P为与特征字符串A相对应的特征字符串集合,特征字符串集合Q为与特征字符串B相对应的特征字符串集合。
综上可知,在上述步骤310中,为目标网站所确定与该目标网站的特征字符串相对应的特征字符串集合的数量可以是一个,也可以是多个,其视该目标网站的特征字符串的数量和/或设定的对应规则不同而存在差异。
步骤330,将特征字符串集合所关联框架标识指示的开发框架确定为开发目标网站所利用的开发框架。
通过如上的过程,基于配置文件中特征字符串集合与开发框架之间的对应关系和目标网站的特征字符串,实现了快速识别开发目标框架所利用的开发框架。
在本申请的一个实施例中,如图4所示,在步骤310之前,识别开发框架的方法还包括:
步骤410,获取多个样本网站所分别对应的第一目录树,以及每一样本网站所对应开发框架的框架标识。
样本网站是指用于生成配置文件且已知所对应开发框架的网站。第一目录树是指样本网站所对应的目录树。样本网站所对应开发框架是指开发样本网站所利用的开发框架。
其中,第一目录树的构建与目标网站的目录树构建过程相同,即:先收集样本网站下页面的URL;然后对URL进行切分,得到分级字符串;最后根据分级字符串构建样本网站的第一目录树。
步骤430,针对每一样本网站,根据第一目录树,确定样本网站对应的第一特征字符串。
样本网站对应的第一特征字符串是指样本网站中用于表征开发样本网站所利用开发框架的分级字符串。
在本申请的一个实施例中,如图5所示,步骤430,包括:
步骤510,统计在样本网站所对应第一目录树中各分级字符串的出现次数。
步骤530,根据所统计的出现次数,确定在第一目录树中出现次数超过第一阈值的第一分级字符串。
第一分级字符串是指在所对应目录树中出现次数超过第一阈值的分级字符串。可以理解的是,样本网站所对应第一目录树中出现次数超过第一阈值的分级字符串可能是一个或者多个。
如上所描述,若一分级字符串在目录树中的出现次数越高,表明该分级字符串与开发目标网站所利用开发框架之间的关联性可能越高,进而说明该分级字符串能反映该目标网站所对应的开发框架的概率越高。从而,通过步骤530,从样本网站对应的第一目录树中确定了与开发该样本网站所利用开发框架之间关联性较高的分级字符串,即第一分级字符串。
步骤550,过滤第一分级字符串中的通用字符串,得到样本网站对应的区别字符串。
如上所描述,通用字符串是指各个开发框架所开发得到网站中页面的URL中相通用的字符串。该通用字符串是各个开发框架生成URL中通用的字符串,该通用字符串并不能反映URL与开发框架之间的关联性,从而,先将第一分级字符串中的通用字符串过滤掉。
样本网站对应的区别字符串是指过滤掉样本网站所对应第一分级字符串中的通用字符串后所剩下的第一分级字符串。
可以理解的是,在步骤550之前,还进一步需要构建通用字符串集合,从而,基于该通用字符串集合实现样本网站所对应第一分级字符串中通用字符串的过滤。
具体来说,针对多个开发框架,收集通过每一开发框架所开发的网站中页面的URL,然后对所收集的URL进行切分得到分级字符串,对应得到通过每一开发框架对应的字符串集合,开发框架所对应的字符串集合中的元素为通过开发框架所开发得到网站中的分级字符串。在此基础上,分析各个字符串集合中的字符串,若一字符串在多个字符串集合中的出现次数和/或出现频率超过一设定阈值,则将该字符串确定为通用字符串,并将其放入通用字符串集合中。其中一字符串(假设为字符串C)在多个字符串集合中的出现频率可以等于包括字符串C的字符串集合的数量/字符串集合总数量。
步骤570,根据区别字符串确定样本网站对应的第一特征字符串。
由于区别字符串可以反映与样本网站所对应开发框架之间的关联性,以此,对应根据区别字符串来确定样本网站对应的第一特征字符串。
在本申请的一个实施例中,可以直接将区别字符串作为样本网站对应的第一特征字符串。一方面,该区别字符串在样本网站所对应第一目录树中出现的次数较高,另一方面,该区别字符串并不是通用字符串,该区别字符串体现了所在样本网站中URL的共性,从而,该区别字符串可以作为样本网站对应的第一特征字符串,用于表征开发样本网站所利用开发框架的特征字符串。
在本申请的另一个实施例中,样本网站对应的区别字符串至少为两个,上述步骤570可以包括:对至少两个区别字符串进行组合得到组合字符串;将组合字符串作为样本网站对应的第一特征字符串。
由于组合字符串中两区别字符串均与开发样本网站所对应的开发框架之间的关联性较高,相较于单一的区别字符串,组合字符串更能表征开发样本网站所利用的开发框架。
对应的,若在配置文件中,将组合字符串作为配置文件中一开发框架所对应的特征字符串集合中的元素,以该组合字符串作为匹配目标,相当于增强了字符串匹配约束,从而可以提高开发框架识别的准确度。
其中,所进行的组合,可以是按照设定的连接符,将至少两区别字符串相连接。举例来说,若样本网站对应的区别字符串包括:wp-content和themes,则可以以“/”作为连接符,将该两个区别字符串组合为组合字符串:wp-content/themes。又例如,样本网站对应的区别字符串包括:wp-content、themes和uploads,则可以组合得到如下两个组合字符串:wp-content/themes和wp-content/uploads。
在本申请的另一实施例中,样本网站对应的区别字符串至少为两个,步骤570包括:对至少两个区别字符串进行组合得到组合字符串;统计组合字符串中所包括的区别字符串在样本网站对应的第一目录树中组合出现的组合出现次数;将组合出现次数满足设定次数要求的组合字符串作为样本网站对应的第一特征字符串。
其中,组合字符串所包括的区别字符串在样本网站对应的第一目录树中组合出现的组合出现次数可以通过统计树分支数量确定,具体的,统计样本网站对应的第一目录树中,同时存在该组合字符串中所包括全部区别字符串中的树分支数量得到,所统计得到的树分支数量即等于该组合字符串对应的组合出现次数。
相较于上述将单一区别字符串或直接将组合字符串作为样本网站对应的第一特征字符串的实施例,在本实施例中,将组合出现次数满足设定次数要求的组合字符串作为样本网站对应的第一特征字符串,作为确定的第一特征字符串更能表征开发样本网站所利用的开发框架。对应的,若在配置文件中,将该组合出现次数满足设定次数要求的组合字符串作为配置文件中一开发框架所对应的特征字符串集合中的元素,可以进一步提高开发框架识别的准确度。
上述根据样本网站确定第一特征字符串的过程同样适用于根据目标网站的目录树确定所对应特征字符串的过程。
步骤450,根据样本网站对应的第一特征字符串和样本网站所对应的框架标识,确定对应于每一开发框架的特征字符串集合。
由于第一特征字符串与样本网站之间存在对应关系,样本网站与框架标识(也可以理解为与开发框架)之间存在对应关系,因此,可以以样本网站作为媒介,将第一特征字符串所对应的框架标识作为该第一特征字符串的一个属性,确定第一特征字符串与开发框架之间的对应关系,进而确定对应于每一开发框架的特征字符串集合。
步骤470,将特征字符串集合和所对应开发框架的框架标识相关联,得到配置文件。
至此,使得配置文件中包括为每一开发框架所分别构建的特征字符串集合。进而,便于以该配置文件作为开发框架的识别基础,准确识别开发框架。
在本申请的一个实施例中,如图6所示,步骤450,包括:
步骤610,按照框架标识对第一特征字符串进行分类,得到对应于每一开发框架的初始特征字符串集合。
由于第一特征字符串与样本网站相对应,样本网站与开发框架相对应,从而,以样本网站作为中介,构建第一特征字符串与开发框架之间的对应关系。在此基础上,将与同一开发框架存在映射关系的若干个第一特征字符串归于同一集合中,该集合即为对应于该开发框架的初始特征字符串集合。
步骤630,按照初始特征字符串集合中第一特征字符串所关联样本网站的数量由大到小的顺序,对初始特征字符串集合中的第一特征字符串进行排序。
初始特征字符串集合中可能包括多个第一特征字符串,初始特征字符串集合中每一第一特征字符串与该初始特征字符串集合所关联开发框架的关联性存在差异。因此,为了保证基于配置文件进行开发框架识别的准确性和识别效率,进一步需要确定初始特征字符串集合中确定与所关联开发框架关联性高的第一特征字符串。
在对应于一开发框架的初始特征字符串集合中,第一特征字符串所关联样本网站的数量越多,则表明该第一特征字符串与所在初始特征字符串集合关联的开发框架之间的关联性越高,对应的,该第一特征字符串更能表征所关联的开发框架。
因此,针对初始特征字符串集合中第一特征字符串所关联样本网站的数量对该集合中的第一特征字符串进行排序,从而对应确定该初始特征字符串集合中各第一特征字符串与该初始特征字符串集合所关联开发框架之间关联性高低的排序。
步骤650,获取初始特征集合中排序位于前设定数量的第一特征字符串。
整体来说,初始特征字符串集合中,第一特征字符串所关联样本网站的数量越大,表明该第一特征字符串与样本网站所对应开发框架的关联性越高。基于此,从初始特征集合中所获取排序位于前设定数量的第一特征字符串是与所对应开发框架关联性较高的特征字符串。其中,该设定数量可以根据实际需要进行设定,在此不进行具体限定。
步骤670,将所获取的第一特征字符串作为所对应开发框架的特征字符串集合中的元素。
通过如上按照第一特征字符串所关联样本网站的数量对初始特征字符串集合中的第一特征字符串进行排序,然后再根据所得到的排序从中获取第一特征字符串,可以确定初始特征字符串集合中与该初始特征字符串集合所对应开发框架关联性高的第一特征字符串,即所获取排序位于前设定数量的第一特征字符串。
在将所获取的第一特征字符串作为所对应开发框架的特征字符串集合中的元素,可以保证基于该特征字符串集合进行开发框架识别更具有针对性,而且相较于将初始特征字符串集合作为所对应开发框架的特征字符串集合进行识别开发框架,本实施例中所确定特征字符串集合中的各字符串与开发框架之间的关联性更高,因此,可以提高识别开发框架的效率和进行开发框架识别的效率。
在本申请的一个实施例中,如图7所示,步骤210之前,识别开发框架的方法还包括:
步骤710,获取针对目标网站的访问数据,访问数据包括多个访问记录,访问记录包括所访问目标网站下页面的URL。
步骤730,按照URL中的分隔符,对URL中的标识字符段进行切分,得到若干分级字符串。
URL中的标识字符段是指可以用于区分目标网站下不同URL的字符段。如上所描述,在同一目标网站下各页面的URL中所包括协议字符段、域名字符段相同,当然,如果未省略端口字符段,各页面的URL中的端口字符段也是相同的。因此,具体来说,URL中的标识字符段是指URL中除协议字符段、域名字符段和端口字符段外的其他字符段。
如上所描述,在URL中,参数字符段以“?”作为开始标识,参数字符段中参数与参数之间以“&”作为分隔符,片段字符段以“#”作为开始标识,路径字符段以“/”作为开始标识,并且各级路径之间通过“/”进行分级,因此,可以将上述中的“?”、“#”、“/”、“&”作为分隔符,对URL中的标识字符段进行切分,得到该URL中的分级字符串。
当然,处理将上述所列举的符号作为分隔符外,还可以将按照字符段的结构来进行切分。举例来说,路径字符段中的最后一级路径可能是文件名称字符段,该文件名称字符段可能包括文件名称和后缀名,而后缀名一般以“.”作为开始标识,从而,基于文件名称字符段的组成结构,可以以“.”作为分界符,将文件名称字符段切分成两个字符串,即文件名称和后缀名。
步骤750,根据URL中的分级字符串构建目标网站的目录树。
在得到目标网站中各URL中的分级字符串后,按照分级字符串在URL中的位置,将分级字符串写入目标网站的目录树中对应的树节点中,以此实现目标网站的目录树的构建。
在本申请的一个实施例中,如图8所示,步骤750,包括:
步骤810,根据对URL中的标识字符段所进行的切分,确定URL中的子路径,子路径的路径起点是URL中的一级路径。
在步骤730所进行的切分中,将分隔符所在位置作为切分位,从而,将相邻切分位之间的字符串作为分级字符串,当然,对于首个切分位,标识字符段中该首个切分位之前的字符串也为分级字符串,对于末尾切分位,该末尾切分位之后的字符串也为分级字符串。进一步的,在本实施例中,还可以将该切分位作为路径分级的分级符,以此实现路径分级,确定URL中的子路径。
其中,每一子路径的路径起点是URL中的一级路径,而路径的终点是对应分级符的前一字符串。
举例来说,若一页面的URL为:http://www.aspxfans.com:8080/news/index.asp。如上所描述,该URL中的标识字符段为除除协议字符段、域名字符段和端口字符段外的其他字符段,即为:/news/index.asp。若以“/”、“?”和“#”作为分隔符进行切分,那么,可以对应得到如下的子路径:子路径I:/news;子路径II:/news/index.asp。
步骤830,统计每一子路径在访问数据中的出现次数,以确定出现次数大于第二阈值的第一子路径。
第一子路径是指目标网站下在访问数据中出现次数超过第二阈值的子路径。该第二阈值可以根据实际需要进行设定,在此不进行具体限定。
若一个子路径在不同的URL中出现,则说明目标网站下该子路径是具有普遍性的,可以代表该目标网站下URL的普遍组成结构,而目标网站下URL的普遍组成结构能在一定程度上反映该目标网站所对应的开发框架。
在此基础上,统计每一子路径在访问数据中的出现次数,进而确定出现次数大于第二阈值的第一子路径,那么,所确定的第一子路径可以代表目标网站下URL的普遍组成结构。
步骤850,按照第一子路径中各分级字符串的位置,将第一路径中的分级字符串写入目标网站所对应目录树中对应的树节点。
由于所确定的第一子路径可以代表目标网站下URL的普遍组成结构,从而,将第一子路径中的分级字符串写入目标网站的目录树中对应的树节点中,可以对应保证目录树中分级字符串可以表征目标网站下URL的普遍组成结构,从而,便于从该目录树中提取得到目标网站的特征字符串。
在本申请的一个实施例中,如图9所示,步骤750之后,识别开发框架的方法还包括:
步骤910,获取为目标网站采集的新增访问数据。
步骤930,根据新增访问数据为目标网站构建第二目录树。
对于目标网站的目录树的构建,由于涉及到该目标网站下URL的收集,因此,可能分时间段进行URL的收集,在此情况下,可以分时间段进行目标网站的目录树的更新。
具体来说,在针对一时间段所收集目标网站的访问数据后,先根据已收集到的访问数据按照上述的过程初始构建目标网站对应的目录树。那么,在后续的过程中,根据为目标网站所采集的新增访问数据构建目标网站的第二目录树。
根据新增访问数据为目标网站构建第二目录树的过程与上述构建目录树的过程相同,在此不再赘述。值得一提的是,所构建的第二目录树与初始构建的目录树的根节点相同。
步骤950,将第二目录树合并至目录树中,以对目录树进行更新。
通过将目标网站的第二目录树合并至目标网站的目录树中,实现了目标网站的目录树的更新。
下面结合一具体实施例对本申请识别开发框架的方法进行具体说明:
图10是根据一具体实施例示出的识别开发框架的流程图,如图10所示,具体包括步骤1010-1090,详细介绍如下:
步骤1010,每小时获取包括所访问页面URL的用户访问数据。
在具体实施例中,由于每小时所获取到用户访问数据的数据量较大,每小时大于在几十亿条,对应的,数据处理量也较大,为了保证数据处理的速度,本实施例的方法在Spark系统中实现,将原始的用户访问数据存在分布式hive表中。
步骤1020,根据相同域名对URL进行归类。
上述步骤1010中所获取到的用户访问数据可能是多个域名(网站)下的数据,因此,按照域名对URL进行归类,得到对应于每一域名的URL。
步骤1030,为每个域名建一个字典,用于存储该域名的目录树。
通过字典来存储域名对应的目录树,从而可以完整保存目录树中的所有分支关系,因为目录树不论是父节点还是子节点均有多个,对应的分支也有多条,普通的结构化数据很难存储全部的父子分支关系。
步骤1040,对URL进行切分。
所进行的切分可以参照上述图7对应实施例中涉及的URL的切分过程,通过对URL进行切分,对应得到若干个分级字符串。
步骤1050,统计相同域名下,所有URL中每一子路径的出现次数。
其中每一子路径的路径地点为所在URL中的一级路径,路径终点为所在分隔符前的分级字符串。在统计子路径的出现次数的过程中,不仅要求两子路径中的路径终点相同,而且要求路径终点前的每一级路径均相同。
步骤1060,如果子路径的出现次数大于一定阈值,则将该子路径中的分级字符串归入该域名的目录树中。
在阈值可以根据实际需要进行设定,例如阈值为20。
步骤1070,将域名对应的新增目录树和之前的目录树合并。
由于每小时都有大量的新增访问数据,因此,将通过新增访问数据该域名构建的新增目录树与之前为该域名构建好的目录树进行合并,实现目录树的更新。在合并过程中,需要一一比较分级字符串及之前的所有路径,以保证目录树合并的准确性,避免出现偏差。
图11是为域名所构建目录树的示意图。如图11所示,左侧为域名,该域名用于标识网站,右侧为该域名对应构建的目录树。
通过如上步骤1010-1070实现了域名所标识网站的目录树构建。
在构建好域名对应的目录树后,可以通过如下的步骤1081-1083或者1082-1084从目录树中提取得到表征开发框架的特征字符串,即进行特征提取。
步骤1081,统计目录树中各分级字符串的出现次数。
步骤1083,确定可以表征开发框架的分级字符串。
在步骤1081-1083中,通过统计目录树中各分级字符串的出现次数,从而可以确定目录树中的出现次数高于次数阈值的分级字符串,由于该部分分级字符串出现次数较高,则该分级字符串可以表征开发框架的概率越高。值得一提的是,一些通用字符串出现的次数也较高,通用字符串例如image、plugin、default,因此,在确定次数高于次数阈值的分级字符串后,过滤掉其中的通用字符串,然后将过滤后的分级字符串作为可以表征开发框架的分级字符串,即特征字符串。
上述步骤1081-1083中只抽取单层分级字符串,不考虑分级字符串的上下文关系,特征字符串的确定过程简单快速,实际中发现,单层分级字符串在很多场景下已经能够代表该网站采用的开发框架了。
步骤1082,统计多个分级字符串组合出现的次数。
步骤1084,将多个分级字符串组合得到组合字符串。
在上述步骤1082-1084的过程中,确定目录树中的出现次数高于次数阈值的分级字符串并过滤掉其中的通用字符串后,统计多个分级字符串在目录树中组合出现的次数,以对应确定可以表征开发框架的组合字符串。例如,将组合出现的次数超过第一次数阈值的多个分级字符串进行组合,将该组合字符串作为可以表征开发框架的组合字符串。
通过上述步骤1082-1084,相当于进行了多个分级字符串之间关系的挖掘,从而,以所确定的组合字符串来表征开发框架,能够保证精准地匹配和定位,保证开发框架识别的准确度。
在完成上述特征提取的过程中,通过步骤1090进行开发框架识别。步骤1090,根据可以表征开发框架的分级字符串或组合字符串识别开发框架。
在一实施例中,为了根据表征开发框架的分级字符串或者组合字符串识别开发框架,预先根据样本网站的URL中的分级字符串和开发该样本网站所对应开发框架的框架标识来生成配置文件,该配置文件为每一开发框架对应配置了特征字符串集合,其中特征字符串集合中的字符串可以作为标识开发框架的字符串。那么,在步骤1090中,如果一域名的特征字符串(通过步骤1081-1083所确定的分级字符串或者通过步骤1082-1084所确定的组合字符串)与某一特征字符串集合中的字符串匹配(例如相同),则可将该特征字符串集合所对应的开发框架即为开发该特征字符串所对应网站的开发框架。
表1是根据一实施例示出开发框架与标识开发框架的字符串的对应关系表。
开发框架 | 标识开发框架的字符串 |
php | _upload、.php |
wordpress | wp-content、wp-includes |
ASP.NET | .aspx |
jsp | .jsp |
avatar | avatar |
jquery | jquery |
javascript | javascript |
vendor | vendor |
ueditor | ueditor |
frontend | frontend |
banner | banner |
lottery | lottery |
workflow | workflow |
表1
在构建得到表1中的对应关系后,则可以对应从网站的目录树中所提取得到的特征字符串与该表1中的对应关系,可以实现网站所对应开发框架的识别。
值得一提的是,表1仅仅示例性示出了部分开发框架与标识开发框架的字符串,进一步的,按照本申请的上述实施例中的方法,还可以进一步挖掘出更多标识开发框架的字符串。
图12是根据一实施例示出的漏洞扫描方法的流程图,该漏洞扫描方法可以由具有计算处理功能的设备来执行,比如可以由图1中所示的服务器105来执行。参照图12所示,该漏洞扫描方法至少包括步骤1210至步骤1250,详细介绍如下:
步骤1210,按照上述任一实施例中识别开发框架的方法,识别开发目标网站所利用的开发框架。
步骤1230,在扫描工具集合中确定适配于开发框架的扫描工具。
步骤1250,通过所确定的扫描工具对目标网站进行漏洞扫描。
网站的漏洞扫描需要针对开发该网站所利用的开发框架来选用适配于开发框架的扫描工具,从而针对性地对网站进行漏洞扫描。相关技术中,由于没有有效的方法识别开发网站所利用的开发框架,因此,在对目标网站进行漏洞扫描之前,需要尝试多种开发框架对应的扫描工具,以此来确定可以适用于目标网站的开发框架。该种方法中,由于需要尝试多种开发框架对应的扫描工具,造成漏洞扫描费时,而且,漏洞扫描速度慢。
在本实施例的漏洞扫描方法中,在进行漏洞扫描之前,根据目标网站的目录树中所提取的特征字符串识别确定了开发目标网站所利用的开发框架,在此基础上,通过与该开发框架相适配的扫描工具来对目标网站进行漏洞扫描。由于在进行漏洞扫描之前并不需要尝试多种扫描工具,来确定适配于目标网站的扫描工具,从而,大幅缩短了漏洞扫描所花费的时间,有效提高了漏洞扫描的效率。
以下介绍本申请的装置实施例,可以用于执行本申请上述实施例中的方法。对于本申请装置实施例中未披露的细节,请参照本申请上述的方法实施例。
图13是根据一实施例示出的识别开发框架的装置的框图,如图13所示,识别开发框架的装置包括:
目录树获取模块1310,用于获取目标网站的目录树,目录树是根据目标网站的分级字符串构建的,分级字符串是对目标网站下页面的URL进行切分得到的。
特征提取模块1330,用于从目录树中提取得到目标网站对应的特征字符串。
识别模块1350,用于根据特征字符串识别开发目标网站所利用的开发框架。
在本申请的一个实施例中,识别模块1350包括:匹配单元,用于根据特征字符串在配置文件中进行字符串匹配,确定与特征字符串相对应的特征字符串集合;确定单元,用于将特征字符串集合所关联框架标识指示的开发框架确定为开发目标网站所利用的开发框架。
在本申请的一个实施例中,识别开发框架的装置还包括:第一目录树获取模块,用于获取多个样本网站所分别对应的第一目录树,以及每一样本网站所对应开发框架的框架标识;第一特征字符串确定模块,用于针对每一样本网站,根据第一目录树,确定样本网站对应的第一特征字符串;特征字符串集合确定模块,用于根据样本网站对应的第一特征字符串和样本网站所对应的框架标识,确定对应于每一开发框架的特征字符串集合;关联模块,用于将特征字符串集合和所对应开发框架的框架标识相关联,得到配置文件。
在本申请的一个实施例中,第一特征字符串确定模块包括:统计单元,用于统计在样本网站所对应第一目录树中各分级字符串的出现次数;第一分级字符串确定单元,用于根据所统计的出现次数,确定在第一目录树中出现次数超过第一阈值的第一分级字符串;过滤单元,用于过滤第一分级字符串中的通用字符串,得到样本网站对应的区别字符串;第一特征字符串确定单元,用于根据区别字符串确定样本网站对应的第一特征字符串。
在本申请的一个实施例中,第一特征字符串确定单元被配置为:以区别字符串作为样本网站对应的第一特征字符串。
在本申请的一个实施例中,区别字符串至少为两个,第一特征字符串确定单元被配置为:对至少两个区别字符串进行组合得到组合字符串;统计组合字符串中所包括的区别字符串在样本网站对应的第一目录树中组合出现的组合出现次数;将组合出现次数满足设定次数要求的组合字符串作为样本网站对应的第一特征字符串。
在本申请的一个实施例中,特征字符串集合确定模块,包括:分类单元,用于按照框架标识对第一特征字符串进行分类,得到对应于每一开发框架的初始特征字符串集合;排序单元,用于根据第一特征字符串集合中第一特征字符串所关联样本网站的数量由大到小的顺序,对初始特征字符串集合中的第一特征字符串进行排序;获取单元,用于获取初始特征集合中排序位于前设定数量的第一特征字符串;特征字符串集合确定单元,用于将将所获取的所述第一特征字符串作为所对应开发框架的特征字符串集合中的元素。
在本申请的一个实施例中,识别开发框架的装置还包括:访问数据获取模块,用于获取针对目标网站的访问数据,访问数据包括多个访问记录,访问记录包括所访问目标网站下页面的URL;路径切分模块,用于按照URL中的分隔符,对URL中的标识字符段进行切分,得到若干分级字符串;目录树构建模块,用于根据URL中的分级字符串构建目标网站的目录树。
在本申请的一个实施例中,目录树构建模块,包括:子路径确定单元,用于根据对URL中的标识字符段所进行的切分,确定URL中的子路径,子路径的路径起点是URL中的一级路径;出现次数统计单元,用于统计每一子路径在访问数据中的出现次数,以确定出现次数大于第二阈值的第一子路径;写入单元,用于按照第一子路径中各分级字符串的位置,将第一路径中的分级字符串写入目标网站所对应目录树中对应的树节点。
在本申请的一个实施例中,识别开发框架的装置还包括:新增访问数据获取模块,用于获取为目标网站采集的新增访问数据;第二目录树构建模块,用于根据新增访问数据为目标网站构建第二目录树;合并模块,用于将第二目录树合并至目录树中,以对目录树进行更新。
图14是根据一实施例示出的漏洞扫描装置的框图,如图14所示,漏洞扫描装置包括:
开发框架识别模块1410,用于按照上述任一实施例中的识别开发框架的方法,识别开发目标网站所利用的开发框架。
扫描工具确定模块1430,用于在扫描工具集合中确定适配于开发框架的扫描工具。
漏洞扫描模块1450,用于通过所确定的扫描工具对目标网站进行漏洞扫描。
上述装置中各个模块/单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
可以理解,这些模块可以通过硬件、软件、或二者结合来实现。当以硬件方式实现时,这些模块可以实施为一个或多个硬件模块,例如一个或多个专用集成电路。当以软件方式实现时,这些模块可以实施为在一个或多个处理器上执行的一个或多个计算机程序。
图15示出了适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。
需要说明的是,图15示出的电子设备的计算机系统1500仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图15所示,计算机系统1500包括中央处理单元(Central Processing Unit,CPU)1501,其可以根据存储在只读存储器(Read-Only Memory,ROM)1502中的程序或者从存储部分1508加载到随机访问存储器(Random Access Memory,RAM)1503中的程序而执行各种适当的动作和处理,例如执行上述实施例中的方法。在RAM 1503中,还存储有系统操作所需的各种程序和数据。CPU 1501、ROM 1502以及RAM 1503通过总线1504彼此相连。输入/输出(Input/Output,I/O)接口1505也连接至总线1504。
以下部件连接至I/O接口1505:包括键盘、鼠标等的输入部分1506;包括诸如阴极射线管(Cathode Ray Tube,CRT)、液晶显示器(Liquid Crystal Display,LCD)等以及扬声器等的输出部分1507;包括硬盘等的存储部分1508;以及包括诸如LAN(Local AreaNetwork,局域网)卡、调制解调器等的网络接口卡的通信部分1509。通信部分1509经由诸如因特网的网络执行通信处理。驱动器1510也根据需要连接至I/O接口1505。可拆卸介质1511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1510上,以便于从其上读出的计算机程序根据需要被安装入存储部分1508。
特别地,根据本申请的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1509从网络上被下载和安装,和/或从可拆卸介质1511被安装。在该计算机程序被中央处理单元(CPU)1501执行时,执行本申请的系统中限定的各种功能。
需要说明的是,本申请实施例所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、闪存、光纤、便携式紧凑磁盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。其中,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现上述实施例中识别开发框架的方法或者漏洞扫描方法。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本申请实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本申请实施方式的方法。
本领域技术人员在考虑说明书及实践这里公开的实施方式后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。
Claims (13)
1.一种识别开发框架的方法,其特征在于,包括:
获取目标网站的目录树,所述目录树是根据所述目标网站的分级字符串构建的,所述分级字符串是对所述目标网站下页面的URL进行切分得到的:
从所述目录树中提取得到所述目标网站对应的特征字符串;
根据所述特征字符串识别开发所述目标网站所利用的开发框架。
2.根据权利要求1所述的方法,其特征在于,所述根据所述特征字符串识别开发所述目标网站所利用的开发框架,包括:
根据所述特征字符串在配置文件中进行字符串匹配,确定与所述特征字符串相对应的特征字符串集合;
将所述特征字符串集合所关联框架标识指示的开发框架确定为开发所述目标网站所利用的开发框架。
3.根据权利要求2所述的方法,其特征在于,所述根据所述特征字符串在配置文件中进行字符串匹配,确定与所述特征字符串相对应的特征字符串集合之前,所述方法还包括:
获取多个样本网站所分别对应的第一目录树,以及每一样本网站所对应开发框架的框架标识;
针对每一样本网站,根据所述第一目录树,确定所述样本网站对应的第一特征字符串;
根据所述样本网站对应的第一特征字符串和所述样本网站所对应的框架标识,确定对应于每一开发框架的特征字符串集合;
将所述特征字符串集合和所对应开发框架的框架标识相关联,得到所述配置文件。
4.根据权利要求3所述的方法,其特征在于,所述根据所述第一目录树,确定所述样本网站对应的第一特征字符串,包括:
统计在所述样本网站所对应第一目录树中各分级字符串的出现次数;
根据所统计的出现次数,确定在所述第一目录树中出现次数超过第一阈值的第一分级字符串;
过滤所述第一分级字符串中的通用字符串,得到所述样本网站对应的区别字符串;
根据所述区别字符串确定所述样本网站对应的第一特征字符串。
5.根据权利要求4所述的方法,其特征在于,所述根据所述区别字符串确定所述样本网站对应的第一特征字符串,包括:
以所述区别字符串作为所述样本网站对应的第一特征字符串。
6.根据权利要求4所述的方法,其特征在于,所述区别字符串至少为两个,所述根据所述区别字符串确定所述样本网站对应的第一特征字符串,包括:
对至少两个所述区别字符串进行组合得到组合字符串;
统计所述组合字符串中所包括的区别字符串在所述样本网站对应的第一目录树中组合出现的组合出现次数;
将组合出现次数满足设定次数要求的组合字符串作为所述样本网站对应的第一特征字符串。
7.根据权利要求3所述的方法,其特征在于,所述根据所述样本网站对应的第一特征字符串和所述样本网站所对应的框架标识,确定对应于每一开发框架的特征字符串集合,包括:
按照框架标识对所述第一特征字符串进行分类,得到对应于每一开发框架的初始特征字符串集合;
按照所述初始特征字符串集合中第一特征字符串所关联样本网站的数量由大到小的顺序,对所述初始特征字符串集合中的第一特征字符串进行排序;
获取所述初始特征集合中排序位于前设定数量的第一特征字符串;
将所获取的所述第一特征字符串作为所对应开发框架的特征字符串集合中的元素。
8.根据权利要求1所述的方法,其特征在于,所述获取目标网站的目录树之前,所述方法还包括:
获取针对所述目标网站的访问数据,所述访问数据包括多个访问记录,所述访问记录包括所访问所述目标网站下页面的URL;
按照所述URL中的分隔符,对所述URL中的标识字符段进行切分,得到若干分级字符串;
根据所述URL中的分级字符串构建所述目标网站的目录树。
9.根据权利要求8所述的方法,其特征在于,所述根据所述URL中的分级字符串构建所述目标网站的目录树,包括:
根据对所述URL中的标识字符段所进行的切分,确定所述URL中的子路径,所述子路径的路径起点是所述URL中的一级路径;
统计每一子路径在所述访问数据中的出现次数,以确定出现次数大于第二阈值的第一子路径;
按照所述第一子路径中各分级字符串的位置,将所述第一路径中的分级字符串写入所述目标网站所对应目录树中对应的树节点。
10.根据权利要求8所述的方法,其特征在于,所述根据所述URL中的分级字符串构建所述目标网站的目录树之后,所述方法还包括:
获取为所述目标网站采集的新增访问数据;
根据所述新增访问数据为所述目标网站构建第二目录树;
将所述第二目录树合并至所述目录树中,以对所述目录树进行更新。
11.一种识别开发框架的装置,其特征在于,所述装置包括:
目录树获取模块,用于获取目标网站的目录树,所述目录树是根据所述目标网站的分级字符串构建的,所述分级字符串是对所述目标网站下页面的URL进行切分得到的;
特征提取模块,用于从所述目录树中提取得到所述目标网站对应的特征字符串;
识别模块,用于根据所述特征字符串识别开发所述目标网站所利用的开发框架。
12.一种电子设备,其特征在于,包括:
处理器;及
存储器,所述存储器上存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,实现如权利要求1至10中任一项所述的方法。
13.一种计算机可读存储介质,其特征在于,其上存储有计算机可读指令,当所述计算机可读指令被处理器执行时,实现如权利要求1至10中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010540068.4A CN113806647A (zh) | 2020-06-12 | 2020-06-12 | 识别开发框架的方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010540068.4A CN113806647A (zh) | 2020-06-12 | 2020-06-12 | 识别开发框架的方法及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113806647A true CN113806647A (zh) | 2021-12-17 |
Family
ID=78892303
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010540068.4A Pending CN113806647A (zh) | 2020-06-12 | 2020-06-12 | 识别开发框架的方法及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113806647A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115756449A (zh) * | 2022-12-02 | 2023-03-07 | 之江实验室 | 一种页面复用方法、装置、存储介质及电子设备 |
CN116737871A (zh) * | 2022-09-20 | 2023-09-12 | 荣耀终端有限公司 | 一种字符串的识别方法及系统 |
-
2020
- 2020-06-12 CN CN202010540068.4A patent/CN113806647A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116737871A (zh) * | 2022-09-20 | 2023-09-12 | 荣耀终端有限公司 | 一种字符串的识别方法及系统 |
CN116737871B (zh) * | 2022-09-20 | 2024-05-07 | 荣耀终端有限公司 | 一种字符串的识别方法及系统 |
CN115756449A (zh) * | 2022-12-02 | 2023-03-07 | 之江实验室 | 一种页面复用方法、装置、存储介质及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109726185B (zh) | 一种基于语法树的日志解析方法、系统和计算机可读介质 | |
EP3635540A1 (en) | Intent-based organisation of apis | |
US10621255B2 (en) | Identifying equivalent links on a page | |
CN112989348B (zh) | 攻击检测方法、模型训练方法、装置、服务器及存储介质 | |
CN108090104A (zh) | 用于获取网页信息的方法和装置 | |
US20170177727A1 (en) | Methods for analyzing web sites using web services and devices thereof | |
CN109285024B (zh) | 在线特征确定方法、装置、电子设备及存储介质 | |
CN114035827A (zh) | 应用程序更新方法、装置、设备及存储介质 | |
CN113806647A (zh) | 识别开发框架的方法及相关设备 | |
Kılınç et al. | Multi‐level reranking approach for bug localization | |
CN114385148A (zh) | 一种实现联动功能的方法、装置、设备和存储介质 | |
CN111158973B (zh) | 一种web应用动态演化监测方法 | |
CN110069691B (zh) | 用于处理点击行为数据的方法和装置 | |
CN117081801A (zh) | 网站的内容管理系统的指纹识别方法、装置及介质 | |
CN112069236A (zh) | 关联文件的展示方法、装置、设备及存储介质 | |
Haas | Protocol to discover machine-readable entities of the ecosystem management actions taxonomy | |
CN105677827B (zh) | 一种表单的获取方法及装置 | |
JP5380874B2 (ja) | 情報検索方法、プログラム及び装置 | |
JP7188461B2 (ja) | セキュリティ情報分析装置、システム、方法およびプログラム | |
KR101648046B1 (ko) | 오픈소스 소프트웨어 추천 시스템 및 방법 | |
CN112130860A (zh) | Json对象解析方法、装置、电子设备及存储介质 | |
JP5652519B2 (ja) | 情報検索方法、プログラム及び装置 | |
JP7197531B2 (ja) | 情報処理装置、情報処理システム、情報処理方法、およびプログラム | |
JP2018206189A (ja) | 情報収集装置、および、情報収集方法 | |
CN110750739B (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 |