具体实施方式
现有的检测URL的方法是由服务器根据人工制定的安全规则对URL进行检测。但是,一方面,黑客利用URL进行网络攻击的手段***,人工制定的安全规则难以涵盖各攻击手段;另一方面,人工制定的安全规则通常滞后于新出现的攻击手段。
为此,在本说明书的一个或多个实施例中,获取若干URL,提取各URL中的参数,并确定每个参数对应的特征向量,根据各参数分别对应的特征向量,构建隔绝森林IsolationForest模型。为本领域技术人员所熟知的是,隔绝森林模型是一种异常检测模型,使用隔绝森林模型可以检测出某个URL是否异常,而异常的URL往往就是被黑客发送的URL,服务器可以拒绝解析异常的URL,从而避免被黑客攻击。
需要说明的是,之所以可以根据若干URL中的参数对应的特征向量构建隔绝森林模型,是因为在实践中,黑客利用URL对服务器进行攻击的主要手段就是在URL的参数中添加非法字段。也就是说,正常的URL中参数的特征向量和异常的URL中参数的特征向量存在显著区别。异常的URL中参数的特征往往是罕见的,明显区别于正常的URL中参数的特征。
基于此,本说明书所述的技术方案的核心思想在于,将已知的若干URL中参数的特征向量作为数据样本,构建隔绝森林模型。隔绝森林模型可以根据某个待检测的URL中的参数的特征向量判断出该URL是否异常。
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书一个或多个实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。通过本说明书实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
以下结合附图,详细说明本说明书各实施例提供的技术方案。
图1是本说明书实施例提供的模型训练方法流程图,包括以下步骤:
S100:获取若干URL。
在本说明书实施例中,执行主体可以是服务器或其他具有数据处理能力的设备,下文将以执行主体是服务器为例。
众所周知,对于一个URL而言,该URL中的参数可以包含用户(可能是黑客)输入的一些信息。
举例来说,“http://server/path/document?name1=value1&name2=value2”是一个URL的典型结构,“?”后的数据即是参数。一个URL中可以包含不止一个参数,不同的参数之间通常以“&”分隔,每个参数具有参数名和参数值。参数值通常是由用户输入的。在本例中,该URL包含两个参数,“name1=value1”表示参数名为name1的参数的参数值为value1;“name2=value2”表示参数名为name2的参数的参数值为value2。
黑客有时候会在URL的参数中添加异常的非法字段,以对服务器进行攻击。举例来说,倘若善意用户登录服务器时发送的正常的URL如下:
“http://server/path/document?name1=user1&name2=password1”,其中,第一参数的参数值为用户名“user1”,第二个参数的参数值为密码“password1”,服务器解析该URL,验证用户名和密码通过后,用户登录到服务器。
而黑客想要冒充用户“user1”登录服务器时,可采用SQL注入攻击的手段,向服务器发送如下异常的URL:
“http://server/path/document?name1=user1&name2=”'or 1=1”,其中,第一参数的参数值为用户名“user1”,第二个参数的参数值却不是对应于用户名的密码,而是非法字段“”'or 1=1”,由于SQL语法固有的特性,当服务器根据该非法字段无法对用户的密码进行验证时,该非法字段会被服务器解析为可执行代码而被服务器执行,导致黑客无需密码也可以登录到用户“user1”的账号,对用户的数据进行操作。
在本步骤S200中,服务器获取的若干URL中一般包含部分正常的URL以及部分异常的URL。而由于异常的URL较为罕见,其在所述若干URL中所占的比例较低。
S102:针对每个URL,提取该URL中的参数。
在本说明书实施例中,服务器提取URL中的参数可以是提取URL中包含的参数名和参数值,也可以是仅提取URL中的参数的参数值。
此外,服务器针对每个URL,可以提取该URL中的全部参数,也可以提取该URL中的部分参数。
由于在实际应用中,有些参数名的出现概率较低,黑客也很少将非法字段添加到这些出现概率较低的参数名对应的参数值中,因此,服务器可以不提取出现概率较低的参数名对应的参数值。
具体而言,服务器可以针对每个URL,在该URL中包含的参数中,确定参数名满足指定条件的参数;针对确定的每个参数,提取该参数的参数值。其中,所述指定条件可以是参数名的出现概率大于指定概率值。如此一来,可以将出现概率较低的参数过滤掉,减轻了服务器在后续步骤中处理数据的负担。
S104:针对提取的每个参数,确定该参数对应的特征向量。
在本说明书实施例中,可以针对提取的每个参数,根据该参数的参数值,确定该参数对应的N维特征向量;N为大于0的自然数。
其中,参数对应特征向量的维度可以包括参数的参数值包含的字符总数、字母总数、数字总数、特定符号总数、不同字符的数量、不同字母的数量、不同数字的数量、不同的特定符号的数量中的至少一个。
以URL“http://server/path/document?name1=user1&name2=password1”为例,该URL中的参数name1的参数值为user1,该参数值包含的字符总数5,字母总数4,数字总数1,特定符号总数0,不同字符的数量5,不同字母的数量4,不同数字的数量1,不同的特定符号的数量0。那么,参数name1对应的特征向量可以是(5,4,1,0,5,4,1,0)。
进一步地,可以对特征向量的每个维度的取值进行归一化处理。此处还是沿用上例说明,可以根据公式对参数name1对应的8个特征向量值进行归一化处理。其中,x表示特征向量值,z表示参数name1包含的字符总数,y表示对x进行归一化处理后构建的数值。那么,参数name1包含的特征向量向量为(5/5,4/5,1/5,0/5,5/5,4/5,1/5,0/5),即(1,0.8,0.2,0,1,0.8,0.8,0)。
S106:根据各参数分别对应的特征向量,构建隔绝森林模型。
在本说明书实施例中,采用隔绝森林算法,根据各参数分别对应的特征向量构建隔绝森林模型,所述隔绝森林模型用于检测URL是否异常。其中,无需对各参数对应的特征向量进行正常或异常的标注。
此处对隔绝森林算法的思想进行简要介绍。参见图2a,在图2a所示的这10个点中包括空心点和实心点,空心点的数量较多(8个),且分布较为集中,而实心点的数量较少(2个),且分布较为分散。可以将空心点视为正常点,实心点视为异常点。也就是说,异常点就是少数且离群的点。然后进行如下操作:
第1次划分:随机出现一条线,将图2a中的这些点划分为A部分和B部分,得到图2b。
第2次划分:针对A部分,继续随机出现一条线,将A部分中的点划分为C部分和D部分;同样,针对B部分,也随机出现一条线,将B部分中的点划分为E部分和F部分,如图2c。
继续针对每个新划分的部分随机出现一条线,继续划分,直至将图2a所示的平面划分为10个部分,每个部分仅包含1个点,即每个点都被划分到一个专属部分(若某个部分中只包括一个点,则这个部分就是这个点的专属部分)中。显然,实心点更容易也更快会被划入专属部分,如图2b中所示的,右上角的实心点已经被划入专属部分(F部分)。也就是说,某个点越容易被划入专属部分,这个点就越异常。
正是基于以上思想,在隔绝森林算法中,存在S个分类树(具体可以是二叉树),针对每个二叉树而言,将图2a所示的这些点放入根节点,从根节点开始,每一次分叉的条件是随机的(即每一次用一条随机出现的线对点进行划分),在该二叉树中,越早落入叶子节点的点其异常的可能性越高。
以上述隔绝森林算法为例,对步骤S106中根据各参数分别对应的特征向量,构建隔绝森林模型进行简述。
隔绝森林包括S个二叉树(iTree),针对每个iTree,训练该iTree的过程可以描述如下:
第一步,在各特征向量中,随机选择M个特征向量,放入该iTree的根节点;
第二步,在特征向量的N个维度中,随机指定一个维度(指定维度),并在该指定维度的取值中,随机指定一个取值,作为切割值;所述切割值介于M个特征向量的该指定维度的取值中的最大值和最小值之间;
第三步,根据所述切割值,将M个特征向量划分为两部分,指定维度的取值不小于所述切割值的特征向量为一部分,指定维度的取值小于所述切割值的为另一部分;
第四步,递归执行第二步和第三步,直至该iTree达到指定高度或该iTree的叶子节点上都只被放入了一个特征向量。其中,指定高度可以根据需要设置,一般为log2M。
通过以上四步,就可以训练出一个iTree。
需要说明的是,当训练下一个iTree时,在第一步中,可以在全部的特征向量中随机选择M个特征向量,也可以在未被选择过的特征向量中随机选择M个特征向量。
重复执行上述四步,可以得到S个训练好的iTree,组成隔绝森林模型。
图3本说明书实施例提供的一种检测URL的方法流程图,包括以下步骤:
S300:获取URL。
S302:提取所述URL中的参数。
S304:针对提取的每个参数,确定该参数对应的特征向量。
S306:将各参数分别对应的特征向量输入到预先构建的隔绝森林模型,以对所述URL进行异常检测。
图3中的所述URL是待检测的URL。对步骤S300~S304的说明可以参见步骤S100~S104,不再赘述。
在步骤S306中,可以将各参数分别对应的特征向量输入到隔绝森林模型,得到各参数分别对应的模型输出结果,根据各参数分别对应的模型输出结果,判断各参数中是否存在异常的参数。
进一步地,可以针对每个参数,将该参数对应的特征向量输入到隔绝森林模型,以通过所述隔绝森林模型中的各分类树对该参数对应的特征向量进行分类,确定该参数对应的特征向量在各分类树中所落入的叶子节点的平均高度,作为该参数对应的模型输出结果;然后,针对每个参数,若该参数对应的模型输出结果小于指定阈值,则确定该参数异常,若该参数对应的模型输出结果不小于指定阈值,则确定该参数正常;当确定任一参数异常时,则确定各参数中存在异常的参数;当确定各参数都正常时,则确定各参数中不存在异常的参数。
通过图1和图3所示的方法,根据URL中的参数的特征向量,构建隔绝森林模型,使得服务器可以通过隔绝森林模型对接收到的URL进行检测,如果确定接收到的URL异常,则可以拒绝解析该URL,从而避免被黑客攻击,提升了网络安全性。
此外,通过本说明书实施例,还可以发现潜在的网络攻击手段。具体而言,通过隔绝森林模型可以确定某个URL是否异常,如果该URL异常,那么就意味着该参数的参数值是异常的,异常的参数值可以提示工作人员分析出黑客采用的攻击手段,方便工作人员完善安全规则。
基于图1所示的模型训练方法,本说明书实施例还对应提供了一种模型训练装置,如图4所示,包括:
获取模块401,获取若干统一资源定位符URL;
提取模块402,针对每个URL,提取该URL中的参数;
确定模块403,针对提取的每个参数,确定该参数对应的特征向量;
处理模块404,根据各参数分别对应的特征向量,构建隔绝森林模型,所述隔绝森林模型用于检测URL是否异常。
所述提取模块,针对每个URL,在该URL包含的参数中,确定参数名满足指定条件的参数;针对确定的每个参数,提取该参数的参数值。
所述确定模块,针对提取的每个参数,根据该参数的参数值,确定该参数对应的N维特征向量;N为大于0的自然数。
N维特征向量的维度,具体包括:参数的参数值包含的字符总数、字母总数、数字总数、符号总数、不同字符的数量、不同字母的数量、不同数字的数量和不同符号的数量中的至少一个。
基于图3所示的检测URL的方法,本说明书实施例还对应提供了一种检测URL的装置,如图5所示,包括:
获取模块501,获取URL;
提取模块502,提取所述URL中的参数;
确定模块503,针对提取的每个参数,确定该参数对应的特征向量;
异常检测模块,将各参数分别对应的特征向量输入到预先构建的隔绝森林Isolation Forest模型,以对所述URL进行异常检测;所述隔绝森林模型是根据上述模型训练方法构建的。
所述异常检测模块,将各参数分别对应的特征向量输入到预先构建的隔绝森林Isolation Forest模型,构建各参数分别对应的模型输出结果;根据各参数分别对应的模型输出结果,判断各参数中是否存在异常的参数;若是,则确定所述URL异常;否则,确定所述URL正常。
所述异常检测模块,针对每个参数,将该参数对应的特征向量输入到预先构建的隔绝森林模型,以通过所述隔绝森林模型中的各分类树对该参数对应的特征向量进行分类,确定该参数对应的特征向量在各分类树中所落入的叶子节点的平均高度,作为该参数对应的模型输出结果;针对每个参数,若该参数对应的模型输出结果小于指定阈值,则确定该参数异常,若该参数对应的模型输出结果不小于指定阈值,则确定该参数正常。
基于图2所示的模型训练方法,本说明书实施例还对应提供了一种模型训练设备,如图6所示,包括一个或多个处理器及存储器,所述存储器存储有程序,并且被配置成由所述一个或多个处理器执行以下步骤:
获取若干统一资源定位符URL;
针对每个URL,提取该URL中的参数;
针对提取的每个参数,确定该参数对应的特征向量;
根据各参数分别对应的特征向量,构建隔绝森林Isolation Forest模型,所述隔绝森林模型用于检测URL是否异常。
基于图3所示的检测URL的方法,本说明书实施例还对应提供了一种检测URL的设备,如图7所示,包括一个或多个处理器及存储器,所述存储器存储有程序,并且被配置成由所述一个或多个处理器执行以下步骤:
获取URL;
提取所述URL中的参数;
针对提取的每个参数,确定该参数对应的特征向量;
将各参数分别对应的特征向量输入到预先构建的隔绝森林Isolation Forest模型,以对所述URL进行异常检测;所述隔绝森林模型是根据上述模型训练方法构建的。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于图6和图7所示的设备而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字符***“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的***、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字符助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、***、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字符多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本说明书的实施例可提供为方法、***或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
以上所述仅为本说明书的实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。