基于HTTP压缩数据流的有害代码检测方法和装置与流程

文档序号:12693379阅读:382来源:国知局
基于HTTP压缩数据流的有害代码检测方法和装置与流程

本发明涉及通信技术领域,尤其涉及一种基于HTTP压缩数据流的有害代码检测方法和装置。



背景技术:

目前,为了提高网络传输的安全性,针对互联网服务器发送的基于超文本传输协议(Hyper Text Transfer Protocol,HTTP)的gzip压缩数据流(由数据流分别经过LZ77压缩和霍夫曼编码得到),位于互联网服务器与客户端之间的防火墙和网关服务器需要对压缩数据流的各个TCP压缩分片进行入侵检测和有害代码的检测,检测通过后才将压缩数据流的各个TCP压缩分片发送至客户端。

现有技术中,防火墙和网关服务器对压缩数据流进行检测时,首先需要对压缩数据流依次进行霍夫曼解码和LZ77解压,然后对解压后的数据流进行入侵或有害代码的检测。然而,对压缩数据流进行的霍夫曼解码和LZ77解压,消耗了大量的时间和存储资源,延长了压缩数据流的传输时间,影响客户端用户上网体验的速度。



技术实现要素:

本发明提供一种基于HTTP压缩数据流的有害代码检测方法和装置,用于解决现有的检测过程中,消耗大量的时间和存储资源的问题。

本发明的第一个方面是提供一种基于HTTP压缩数据流的有害代码检测方法,包括:

获取互联网服务器发送客户端待接受的gzip压缩数据流,所述gzip压缩数据流为所述互联网服务器将原始明文数据经过LZ77压缩和霍夫曼编码后得到的压缩数据流;

对所述gzip压缩数据流进行霍夫曼解码,得到经过LZ77压缩的第一压 缩数据流,所述第一压缩数据流中包括至少一个TCP压缩分片;

触发多模式匹配窗口滑动,以推动LZ77解压滑动窗口在所述第一压缩数据流上的滑动,以实现采用所述LZ77解压滑动窗口对所述第一压缩数据流进行LZ77解压的同时,采用所述多模式匹配窗口对解压后得到的原始明文数据进行有害模式串的匹配;其中,采用所述LZ77解压滑动窗口对所述第一压缩数据流进行LZ77解压的过程中,根据第一压缩数据流中的指针查询预设的临时栈,判断所述临时栈中是否存有位于所述指针所指向的参考字符串中的第一索引位置,若存有,根据所述指针所指向的参考字符串中的第一索引位置,确定所述指针所在的目标位置上替换得到的参考字符串中的第二索引位置,将所述第二索引位置存储至所述临时栈中;并判断所述指针所指向的参考字符串的长度length是否大于2(Lmin-1),在所述指针所指向的参考字符串的长度length大于2(Lmin-1)时,在所述指针所在的目标位置上的参考字符串中的第Lmin-1个字符处设置跳跃距离参数Length-2(Lmin-1)+1,以便在采用多模式匹配窗口对解压后得到的原始明文数据进行有害模式串的匹配时,在所述参考字符串中的第Lmin-1个字符处跳跃Length-2(Lmin-1)+1个字符至第Length-(Lmin-1)+1个字符处进行模式串匹配;所述LZ77解压滑动窗口的右边界和多模式匹配窗口的右边界之间的距离小于Lmin-1;Lmin表示所述有害模式串的最小长度,且为正整数;Length为LZ77解压过程中指针所指向的参考字符串的长度;所述指针中包括所述指针所在的目标位置至所述指针指向的参考字符串的位置之间的第一距离,以及所述参考字符串的长度;

若在对所述至少一个TCP压缩分片全部解压后,其所对应的原始明文数据中不含有与有害模式串匹配的字符串,则将所述TCP压缩分片对应的gzip压缩数据流发送至所述客户端。

进一步地,所述采用所述多模式匹配窗口对解压后得到的原始明文数据进行有害模式串的匹配,包括:

获取所述原始明文数据中第i字节至第i+N-1字节组成的第一待匹配的字符块;

判断所述第一待匹配的字符块中各字符上是否设置有跳跃距离参数;

若所述第一待匹配的字符块中各字符上均未设置有跳跃距离参数,则判 断所述第一待匹配的字符块在预设的SHIFT表中是否存在对应的步长值,若所述第一待匹配的字符块在所述预设的SHIFT表中不存在对应的步长值,将i加Lmin-1,重复上述步骤,直至判断完成;

其中,i为正整数,且初始时i等于1;N表示所述待匹配的字符块的字节长度,且为正整数。

进一步地,所述的方法还包括:

若所述第一待匹配的字符块在所述预设的SHIFT表中存在对应的步长值,则判断所述待匹配的字符块在所述预设的SHIFT表中存在对应的步长值是否为预设步长值;

若所述待匹配的字符块在所述预设的SHIFT表中存在对应的步长值是为所述预设步长值,则获取所述第i字节的前面Lmin-N个字节;

将所述Lmin-N个字节添加至所述第一待匹配的字符块前,以形成第二待匹配的字符块;

根据所述第一待匹配的字符块查询预设的哈希表,获取包括所述第一待匹配的字符块的第一有害模式串;

判断所述第二待匹配的字符块与所述第一有害模式串是否匹配;

将i加1,重复上述步骤,直至判断完成;

其中,N表示所述待匹配的字符块的字节长度,且为正整数;Lmin表示所述有害模式串的最小长度,且为正整数。

进一步地,所述的方法还包括:

若所述第一待匹配的字符块中的字符上设置有跳跃距离参数,则将i加Length-2(Lmin-1)+1;并重新获取第一待匹配的字符块进行匹配。

进一步地,所述的方法还包括:

若所述第二待匹配的字符块与所述第一有害模式串匹配,则将所述第二待匹配的字符块的索引位置存储至所述临时栈中。

进一步地,所述判断所述临时栈中是否存有位于所述指针所指向的参考字符串中的第一索引位置,包括:

获取所述临时栈中存储的与有害模式串匹配的字符串的索引位置,所述索引位置包括:所述字符串的索引地址以及所述字符串的长度;

判断所述字符串的索引位置与所述指针是否满足以下公式:

指针所在的目标位置-所述指针中的第一距离<=字符串的索引位置<=指针所在的目标位置-所述指针中的第一距离+所述指针中的所述参考字符串的长度;

若所述字符串的索引位置与所述指针满足上述公式,则确定所述临时栈中存有位于所述指针所指向的参考字符串中的第一索引位置。

本发明中,通过获取互联网服务器发送客户端待接受的HTTP的gzip压缩数据流,对其进行霍夫曼解码,得到经过LZ77压缩的第一压缩数据流;触发多模式匹配窗口滑动,以推动LZ77解压滑动窗口在第一压缩数据流上的滑动,以实现采用LZ77解压滑动窗口对第一压缩数据流进行LZ77解压的同时,采用多模式匹配窗口对解压后得到的原始明文数据进行有害模式串的匹配;其中,针对第一压缩数据流中的长指针,只做边界匹配,并判断临时栈是否存有位于指针所指向的参考字符串中的索引位置,若有,确定指针所在的目标位置中的索引位置并存储至临时栈中,且LZ77解压滑动窗口和多模式匹配窗口之间的距离小于预设距离阈值,从而实现边进行LZ77解压,边进行跳跃性的多模匹配检测,缩短了压缩数据流的入侵或有害代码检测时间,提高了客户端用户上网体验的速度。

本发明的另一个方面提供一种基于HTTP压缩数据流的有害代码检测装置,包括:

获取模块,用于获取互联网服务器发送客户端待接受的gzip压缩数据流,所述gzip压缩数据流为所述互联网服务器将原始明文数据经过LZ77压缩和霍夫曼编码后得到的压缩数据流;

解压模块,用于对所述gzip压缩数据流进行霍夫曼解码,得到经过LZ77压缩的第一压缩数据流,所述第一压缩数据流中包括至少一个TCP压缩分片;

触发模块,用于触发多模式匹配窗口滑动,以推动LZ77解压滑动窗口在所述第一压缩数据流上的滑动;

匹配模块,用于在采用所述LZ77解压滑动窗口对所述第一压缩数据流进行LZ77解压的同时,采用所述多模式匹配窗口对解压后得到的原始明文数据进行有害模式串的匹配;其中,采用所述LZ77解压滑动窗口对所述第 一压缩数据流进行LZ77解压的过程中,根据第一压缩数据流中的指针查询预设的临时栈,判断所述临时栈中是否存有位于所述指针所指向的参考字符串中的第一索引位置,若存有,根据所述指针所指向的参考字符串中的第一索引位置,确定所述指针所在的目标位置上替换得到的参考字符串中的第二索引位置,将所述第二索引位置存储至所述临时栈中;并判断所述指针所指向的参考字符串的长度length是否大于2(Lmin-1),在所述指针所指向的参考字符串的长度length大于2(Lmin-1)时,在所述指针所在的目标位置上的参考字符串中的第Lmin-1个字符处设置跳跃距离参数Length-2(Lmin-1)+1,以便在采用多模式匹配窗口对解压后得到的原始明文数据进行有害模式串的匹配时,在所述参考字符串中的第Lmin-1个字符处跳跃Length-2(Lmin-1)+1个字符至第Length-(Lmin-1)+1个字符处进行模式串匹配;所述LZ77解压滑动窗口的右边界和多模式匹配窗口的右边界之间的距离小于Lmin-1;Lmin表示所述有害模式串的最小长度,且为正整数;Length为LZ77解压过程中指针所指向的参考字符串的长度;所述临时栈中保存有所述至少一个TCP压缩分片中与有害模式串匹配的模式串的索引位置;所述指针中包括所述指针所在的目标位置至所述指针指向的参考字符串的位置之间的第一距离,以及所述参考字符串的长度;

发送模块,用于在对所述至少一个TCP压缩分片全部解压后,其所对应的原始明文数据中不含有与有害模式串匹配的字符串时,将所述TCP压缩分片对应的gzip压缩数据流发送至所述客户端。

进一步地,所述匹配模块包括:获取子模块和判断子模块;

所述匹配模块采用所述多模式匹配窗口对解压后得到的原始明文数据进行有害模式串的匹配中,所述获取子模块,用于获取所述原始明文数据中第i字节至第i+N-1字节组成的第一待匹配的字符块;

所述判断子模块,用于判断所述第一待匹配的字符块中各字符上是否设置有跳跃距离参数;

所述判断子模块,还用于在所述第一待匹配的字符块中各字符上均未设置有跳跃距离参数时,判断所述第一待匹配的字符块在预设的SHIFT表中是否存在对应的步长值,若所述第一待匹配的字符块在所述预设的SHIFT表中不存在对应的步长值,将i加Lmin-1,重复上述步骤,直至判断完成;

其中,i为正整数,且初始时i等于1;N表示所述待匹配的字符块的字节长度,且为正整数。

进一步地,所述匹配模块还包括:添加子模块;

所述判断子模块,还用于在所述第一待匹配的字符块在所述预设的SHIFT表中存在对应的步长值时,判断所述待匹配的字符块在所述预设的SHIFT表中存在对应的步长值是否为预设步长值;

所述获取子模块,还用于所述待匹配的字符块在所述预设的SHIFT表中存在对应的步长值是为所述预设步长值时,获取所述第i字节的前面Lmin-N个字节;

所述添加子模块,用于将所述Lmin-N个字节添加至所述第一待匹配的字符块前,以形成第二待匹配的字符块;

所述获取子模块,还用于根据所述第一待匹配的字符块查询预设的哈希表,获取包括所述第一待匹配的字符块的第一有害模式串;

所述判断子模块,还用于判断所述第二待匹配的字符块与所述第一有害模式串是否匹配;

将i加1,重复上述步骤,直至判断完成;

其中,N表示所述待匹配的字符块的字节长度,且为正整数;Lmin表示所述有害模式串的最小长度,且为正整数。

进一步地,所述获取子模块,还用于在所述第一待匹配的字符块中的字符上设置有跳跃距离参数时,将i加Length-2(Lmin-1)+1;并重新获取第一待匹配的字符块进行匹配。

本发明中,通过获取互联网服务器发送客户端待接受的HTTP的gzip压缩数据流,对其进行霍夫曼解码,得到经过LZ77压缩的第一压缩数据流;触发多模式匹配窗口滑动,以推动LZ77解压滑动窗口在第一压缩数据流上的滑动,以实现采用LZ77解压滑动窗口对第一压缩数据流进行LZ77解压的同时,采用多模式匹配窗口对解压后得到的原始明文数据进行有害模式串的匹配;其中,针对第一压缩数据流中的长指针,只做边界匹配,并判断临时栈是否存有位于指针所指向的参考字符串中的索引位置,若有,确定指针所在的目标位置中的索引位置并存储至临时栈中,且LZ77解压滑动窗口和多模式匹配窗口之间的距离小于预设距离阈值,从而实现边进行LZ77解压, 边进行跳跃性的多模匹配检测,缩短了压缩数据流的入侵或有害代码检测时间,提高了客户端用户上网体验的速度。

附图说明

图1为本发明提供的基于HTTP压缩数据流的有害代码检测方法一个实施例的流程图;

图2为根据第一压缩数据流中的指针查询预设的临时栈获取第一索引位置以及存储第二索引位置的示意图;

图3为本发明提供的基于HTTP压缩数据流的有害代码检测方法又一个实施例的流程图;

图4为本发明提供的基于HTTP压缩数据流的有害代码检测装置一个实施例的结构示意图;

图5为本发明提供的基于HTTP压缩数据流的有害代码检测装置又一个实施例的结构示意图。

具体实施方式

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

图1为本发明提供的基于HTTP压缩数据流的有害代码检测方法一个实施例的流程图,如图1所示,具体包括以下步骤:

101、获取互联网服务器发送客户端待接受的gzip压缩数据流,gzip压缩数据流为互联网服务器将原始明文数据经过LZ77压缩和霍夫曼编码后得到的压缩数据流。

本发明提供的基于HTTP压缩数据流的有害代码检测方法的执行主体为基于HTTP压缩数据流的有害代码检测装置,基于HTTP压缩数据流的有害代码检测装置具体可以为位于互联网服务器与客户端之间的防火墙或者网关服务器。

其中,LZ77是一种自适应的指针回溯压缩算法,核心是在LZ77压缩滑动窗口中的历史字符中搜索重复的字节,当有重复的字节时,重复的字节将被一组短小的指针(distance,length)替换,指针里面distance是指与重复字节之间的距离,从1到32KB之间。length是3到258之间的一个数,代表重复字节的长度。例如,字符“applefapplt”,可以被压缩为“applef(6,4)t”。LZ77压缩处理的对象具体可以为原始明文数据中的HTML语言、Javascript语言和CSS文件等。

互联网服务器对原始明文数据进行LZ77压缩后,采用霍夫曼编码对LZ77压缩后的数据流的压缩过程包括:采用霍夫曼编码对LZ77压缩过程中生成的指针以及字符进行再次压缩,得到两棵霍夫曼树信息和两类霍夫曼编码的bit流;最后采用游程编码和霍夫曼编码压缩技术压缩两棵霍夫曼树的数据序列信息。

互联网服务器对原始明文数据压缩完成得到gzip压缩数据流后,可以将gzip压缩数据流拆分成多个连续的gzip压缩数据包,为每个gzip压缩数据包分配HTTP文件头,并进行发送。

102、对gzip压缩数据流进行霍夫曼解码,得到经过LZ77压缩的第一压缩数据流,第一压缩数据流中包括至少一个TCP压缩分片。

防火墙或网关服务器获取到的gzip压缩数据流具体可以为多个连续的携带有HTTP文件头的gzip压缩数据包,每个gzip压缩数据包中包括一个TCP压缩分片。防火墙或网关服务器获取到gzip压缩数据流之后,可以移出每个压缩数据包的HTTP文件头,将压缩数据包按照序号组成压缩数据流。压缩数据包的大小一般从64字节到1518字节。其中,霍夫曼树信息被存储在第一个gzip压缩数据包中。一般而言,不同的gzip压缩数据流有不同的霍夫曼树信息。

103、触发多模式匹配窗口滑动,以推动LZ77解压滑动窗口在第一压缩数据流上的滑动,以实现采用LZ77解压滑动窗口对第一压缩数据流进行LZ77解压的同时,采用多模式匹配窗口对解压后得到的原始明文数据进行有害模式串的匹配;其中,采用LZ77解压滑动窗口对第一压缩数据流进行LZ77解压的过程中,根据第一压缩数据流中的指针查询预设的临时栈,判断临时栈中是否存有位于指针所指向的参考字符串中的第一索引位置,若存 有,根据指针所指向的参考字符串中的第一索引位置,确定指针所在的目标位置上替换得到的参考字符串中的第二索引位置,将第二索引位置存储至临时栈中;并判断指针所指向的参考字符串的长度length是否大于2(Lmin-1),在指针所指向的参考字符串的长度length大于2(Lmin-1)时,在指针所在的目标位置上的参考字符串中的第Lmin-1个字符处设置跳跃距离参数Length-2(Lmin-1)+1,以便在采用多模式匹配窗口对解压后得到的原始明文数据进行有害模式串的匹配时,在参考字符串中的第Lmin-1个字符处跳跃Length-2(Lmin-1)+1个字符至第Length-(Lmin-1)+1个字符处进行模式串匹配;LZ77解压滑动窗口的右边界和多模式匹配窗口的右边界之间的距离小于Lmin-1;Lmin表示有害模式串的最小长度,且为正整数;Length为LZ77解压过程中指针所指向的参考字符串的长度;临时栈中保存有至少一个TCP压缩分片中与有害模式串匹配的模式串的索引位置;指针中包括指针所在的目标位置至指针指向的参考字符串的位置之间的第一距离,以及参考字符串的长度。

其中,防火墙或者网关服务器上预先保存有多个有害模式串。其中,LZ77解压滑动窗口的长度具体可以为32KB。多模式匹配窗口的长度具体也可以为32KB。采用LZ77解压滑动窗口对第一压缩数据流进行LZ77解压的过程中,根据第一压缩数据流中的指针查询预设的临时栈获取第一索引位置以及存储第二索引位置的示意图可以如图2所示,在图2中,指针所指向的参考字符串中的第一索引位置如参考字符串中的黑色竖线所在位置;指针所在的目标位置上替换得到的参考字符串中的第二索引位置如第一重复字符串中的黑色竖线所在位置,即临时栈的虚线箭头所指向的位置;第一重复字符串中的中间区域为要跳跃的区域;第一重复字符串的两边的区域为需要进行匹配的区域。

其中,解压前,临时栈中可以不包括索引位置信息。具体地,步骤103中判断临时栈中是否存有位于指针所指向的参考字符串中的第一索引位置的过程具体可以包括:获取临时栈中存储的与有害模式串匹配的字符串的索引位置,索引位置包括:字符串的索引地址以及字符串的长度;判断字符串的索引位置与指针是否满足以下公式:

指针所在的目标位置-指针中的第一距离<=字符串的索引位置<=指针所 在的目标位置-指针中的第一距离+指针中的参考字符串的长度;

若字符串的索引位置与指针满足上述公式,则确定临时栈中存有位于指针所指向的参考字符串中的第一索引位置。

例如,在临时栈里面存储有(10,3)、(20,4)、(25,1)、(40,2)索引位置,现在分别有当前位置是70和100的指针(40,20)和(50,10)。在临时栈中,索引位置(40,2)在指针(40,20)所指向的参考字符串的位置区间(30,50)内部,即(70-40<=40<=70-40+20),则在指针位置70处的指针(40,20)内部存在有害模式串的索引位置(80,2),因此在临时栈中插入索引位置(80,2);同理在位置100处的指针(50,10)所指向的参考字符串的位置区间内部不存在有害模式串的索引位置。

104、若在对至少一个TCP压缩分片全部解压后,其所对应的原始明文数据中不含有与有害模式串匹配的字符串,则将TCP压缩分片对应的gzip压缩数据流发送至客户端。

其中,若其所对应的原始明文数据中含有与有害模式串匹配的字符串,则防火墙或者网关服务器丢弃TCP压缩分片对应的gzip压缩数据流。

其中,步骤104中,至少一个TCP压缩分片对应的原始明文数据为包括至少一个TCP压缩分片的第一压缩数据流对应的原始明文数据。

本实施例中,通过获取互联网服务器发送客户端待接受的gzip压缩数据流,对其进行霍夫曼解码,得到经过LZ77压缩的第一压缩数据流;触发多模式匹配窗口滑动,以推动LZ77解压滑动窗口在第一压缩数据流上的滑动,以实现采用LZ77解压滑动窗口对第一压缩数据流进行LZ77解压的同时,采用多模式匹配窗口对解压后得到的原始明文数据进行有害模式串的匹配;其中,针对第一压缩数据流中的长指针,只做边界匹配,并判断临时栈是否存有位于指针所指向的参考字符串中的索引位置,若有,确定指针所在的目标位置中的索引位置并存储至临时栈中,且LZ77解压滑动窗口和多模式匹配窗口之间的距离小于预设距离阈值,从而实现边进行LZ77解压,边进行跳跃性的多模匹配检测,缩短了压缩数据流的入侵或有害代码检测时间,提高了客户端用户上网体验的速度。

图3为本发明提供的基于HTTP压缩数据流的有害代码检测方法又一个 实施例的流程图,在图1所示实施例的基础上,步骤103中采用多模式匹配窗口对解压后得到的原始明文数据进行有害模式串的匹配的过程具体可以包括以下步骤:

1031、获取原始明文数据中第i字节至第i+N-1字节组成的第一待匹配的字符块。

其中,i为正整数,且初始时i等于1;N表示待匹配的字符块的字节长度,且为正整数。

1032、判断第一待匹配的字符块中各字符上是否设置有跳跃距离参数,若第一待匹配的字符块中各字符上均未设置有跳跃距离参数,则执行步骤1033;若第一待匹配的字符块中的字符上设置有跳跃距离参数,则执行步骤1035。

1033、判断第一待匹配的字符块在预设的SHIFT表中是否存在对应的步长值,若第一待匹配的字符块在预设的SHIFT表中不存在对应的步长值,则执行步骤1034;若第一待匹配的字符块在预设的SHIFT表中存在对应的步长值,则执行步骤1036。

其中,在判断第一待匹配的字符块在预设的SHIFT表中是否存在对应的步长值之前,防火墙或者网关服务器可以根据有害模式串创建SHIFT表和哈希表。

创建SHIFT表的过程为,获取有害模式串的最小长度Lmin,采用最小长度从各个有害模式串的前缀开始截取有害模式串的前Lmin个字符,根据有害模式串的前Lmin个字符中的各个字符块,根据各个字符块在前Lmin个字符的步长生成SHIFT表。然后根据包括字符块的有害模式串的情况生成哈希表,哈希表中保存有字符块以及对应的包括有字符块的有害模式串。

例如,假设有害模式串包括:rainbow,shine,river,version,brush。截取前缀后的字符串,字符块以及生成的SHIFT表见表1所示。

表1

其中,步长为0表示存在截取后的有害字符串的结尾字符与当前字符块是一致的。

1034、将i加Lmin-1,重复执行步骤1031,直至判断完成。

1035、将i加Length-2(Lmin-1)+1,重复执行步骤1031,直至判断完成。

1036、判断待匹配的字符块在预设的SHIFT表中存在对应的步长值是否为预设步长值;若待匹配的字符块在预设的SHIFT表中存在对应的步长值是为预设步长值,则执行步骤1037;若待匹配的字符块在预设的SHIFT表中存在对应的步长值,但对应的步长值不是预设步长值,则执行步骤1041。

其中,此处的预设步长值可以为0。

1037、获取第i字节的前面Lmin-N个字节。

1038、将Lmin-N个字节添加至第一待匹配的字符块前,以形成第二待匹配的字符块。

1039、根据第一待匹配的字符块查询预设的哈希表,获取包括第一待匹配的字符块的第一有害模式串。

1040、判断第二待匹配的字符块与第一有害模式串是否匹配;然后执行步骤1041;若第二待匹配的字符块与第一有害模式串匹配,还执行步骤1042。

其中,N表示待匹配的字符块的字节长度,且为正整数;Lmin表示有害字符串的最小长度,且为正整数。

1041、将i加1,重复执行步骤1031,直至判断完成。

1042、将第二待匹配的字符块的索引位置存储至临时栈中。

本实施例中,通过获取互联网服务器发送客户端待接受的gzip压缩数据流,对其进行霍夫曼解码,得到经过LZ77压缩的第一压缩数据流;触发多模式匹配窗口滑动,以推动LZ77解压滑动窗口在第一压缩数据流上的滑动,以实现采用LZ77解压滑动窗口对第一压缩数据流进行LZ77解压的同时,采用多模式匹配窗口对解压后得到的原始明文数据进行有害模式串的匹配;其中,针对第一压缩数据流中的长指针,只做边界匹配,并判断临时栈是否存有位于指针所指向的参考字符串中的索引位置,若有,确定指针所在的目标位置中的索引位置并存储至临时栈中;在用多模式匹配窗口对解压后得到的原始明文数据进行有害模式串的匹配的过程中,获取原始明文数据中第i字节至第i+N-1字节组成的第一待匹配的字符块,先判断第一待匹配的字符块 中各字符上是否设置有跳跃距离参数,根据判断结果确定是否跳跃,然后判断第一待匹配的字符块在预设的SHIFT表中是否存在对应的步长值,根据判断结果确定是否存在与第一待匹配的字符块对应的第二字符块匹配的有害模式串,且LZ77解压滑动窗口和多模式匹配窗口之间的距离小于预设距离阈值,从而实现边进行LZ77解压,边进行跳跃性的多模匹配检测,缩短了压缩数据流的入侵或有害代码检测时间,提高了客户端用户上网体验的速度。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

图4为本发明提供的基于HTTP压缩数据流的有害代码检测装置一个实施例的结构示意图,如图4所示,包括:

获取模块41,用于获取互联网服务器发送客户端待接受的gzip压缩数据流,gzip压缩数据流为互联网服务器将原始明文数据经过LZ77压缩和霍夫曼编码后得到的压缩数据流;

解压模块42,用于对gzip压缩数据流进行霍夫曼解码,得到经过LZ77压缩的第一压缩数据流,第一压缩数据流中包括至少一个TCP压缩分片;

触发模块43,用于触发多模式匹配窗口滑动,以推动LZ77解压滑动窗口在第一压缩数据流上的滑动;

匹配模块44,用于在采用LZ77解压滑动窗口对第一压缩数据流进行LZ77解压的同时,采用多模式匹配窗口对解压后得到的原始明文数据进行有害模式串的匹配;其中,采用LZ77解压滑动窗口对第一压缩数据流进行LZ77解压的过程中,根据第一压缩数据流中的指针查询预设的临时栈,判断临时栈中是否存有位于指针所指向的参考字符串中的第一索引位置,若存有,根据指针所指向的参考字符串中的第一索引位置,确定指针所在的目标位置上替换得到的参考字符串中的第二索引位置,将第二索引位置存储至临时栈中;并判断指针所指向的参考字符串的长度length是否大于2(Lmin-1),在指针所指向的参考字符串的长度length大于2(Lmin-1)时,在指针所在的目 标位置上的参考字符串中的第Lmin-1个字符处设置跳跃距离参数Length-2(Lmin-1)+1,以便在采用多模式匹配窗口对解压后得到的原始明文数据进行有害模式串的匹配时,在参考字符串中的第Lmin-1个字符处跳跃Length-2(Lmin-1)+1个字符至第Length-(Lmin-1)+1个字符处进行模式串匹配;LZ77解压滑动窗口的右边界和多模式匹配窗口的右边界之间的距离小于Lmin-1;Lmin表示有害模式串的最小长度,且为正整数;Length为LZ77解压过程中指针所指向的参考字符串的长度;临时栈中保存有至少一个TCP压缩分片中与有害模式串匹配的模式串的索引位置;指针中包括指针所在的目标位置至指针指向的参考字符串的位置之间的第一距离,以及参考字符串的长度;

发送模块45,用于在对至少一个TCP压缩分片全部解压后,其所对应的原始明文数据中不包含与有害模式串匹配的字符串时,将TCP压缩分片对应的gzip压缩数据流发送至客户端。

本发明提供的基于HTTP压缩数据流的有害代码检测装置具体可以为位于互联网服务器与客户端之间的防火墙或者网关服务器。

具体地,匹配模块44判断临时栈中是否存有位于指针所指向的参考字符串中的第一索引位置的过程具体可以包括:获取临时栈中存储的与有害模式串匹配的字符串的索引位置,索引位置包括:字符串的索引地址以及字符串的长度;判断字符串的索引位置与指针是否满足以下公式:

指针所在的目标位置-指针中的第一距离<=字符串的索引位置<=指针所在的目标位置-指针中的第一距离+指针中的参考字符串的长度;

若字符串的索引位置与指针满足上述公式,则确定临时栈中存有位于指针所指向的参考字符串中的第一索引位置。

本实施例中,通过获取互联网服务器发送客户端待接受的gzip压缩数据流,对其进行霍夫曼解码,得到经过LZ77压缩的第一压缩数据流;触发多模式匹配窗口滑动,以推动LZ77解压滑动窗口在第一压缩数据流上的滑动,以实现采用LZ77解压滑动窗口对第一压缩数据流进行LZ77解压的同时,采用多模式匹配窗口对解压后得到的原始明文数据进行有害模式串的匹配;其中,针对第一压缩数据流中的长指针,只做边界匹配,并判断临时栈是否存有位于指针所指向的参考字符串中的索引位置,若有,确定指针所在的目标 位置中的索引位置并存储至临时栈中,且LZ77解压滑动窗口和多模式匹配窗口之间的距离小于预设距离阈值,从而实现边进行LZ77解压,边进行跳跃性的多模匹配检测,缩短了压缩数据流的入侵或有害代码检测时间,提高了客户端用户上网体验的速度。

进一步地,结合参考图5,在图4所示实施例的基础上,匹配模块44包括:获取子模块441、判断子模块442和添加子模块443;

匹配模块44采用多模式匹配窗口对解压后得到的原始明文数据进行有害模式串的匹配中,获取子模块441,用于获取原始明文数据中第i字节至第i+N-1字节组成的第一待匹配的字符块;

判断子模块442,用于判断第一待匹配的字符块中各字符上是否设置有跳跃距离参数;

判断子模块442,还用于在第一待匹配的字符块中各字符上均未设置有跳跃距离参数时,判断第一待匹配的字符块在预设的SHIFT表中是否存在对应的步长值,若第一待匹配的字符块在预设的SHIFT表中不存在对应的步长值,将i加Lmin-1,重复上述步骤,直至判断完成;

其中,i为正整数,且初始时i等于1;N表示待匹配的字符块的字节长度,且为正整数;

判断子模块442,还用于在第一待匹配的字符块在预设的SHIFT表中存在对应的步长值时,判断待匹配的字符块在预设的SHIFT表中存在对应的步长值是否为预设步长值;

获取子模块441,还用于待匹配的字符块在预设的SHIFT表中存在对应的步长值是为预设步长值时,获取第i字节的前面Lmin-N个字节;

添加子模块443,用于将Lmin-N个字节添加至第一待匹配的字符块前,以形成第二待匹配的字符块;

获取子模块441,还用于根据第一待匹配的字符块查询预设的哈希表,获取包括第一待匹配的字符块的第一有害模式串;

判断子模块442,还用于判断第二待匹配的字符块与第一有害模式串是否匹配;

将i加1,重复上述步骤,直至判断完成;

其中,N表示待匹配的字符块的字节长度,且为正整数;Lmin表示有害模式串的最小长度,且为正整数;

其中,判断子模块442在判断第一待匹配的字符块在预设的SHIFT表中是否存在对应的步长值之前,防火墙或者网关服务器可以根据有害字符串创建SHIFT表和哈希表。

创建SHIFT表的过程为,获取有害模式串的最小长度Lmin,采用最小长度从各个有害模式串的前缀开始截取有害模式串的前Lmin个字符,根据有害模式串的前Lmin个字符中的各个字符块,根据各个字符块在前Lmin个字符的步长生成SHIFT表。然后根据包括字符块的有害模式串的情况生成哈希表,哈希表中保存有字符块以及对应的包括有字符块的有害字符串。

进一步地,获取子模块441,还用于在第一待匹配的字符块中的字符上设置有跳跃距离参数时,将i加Length-2(Lmin-1)+1;并重新获取第一待匹配的字符块进行匹配。

进一步地,所述的装置还可以包括:存储模块,存储模块用于,在第二待匹配的字符块与第一有害模式串匹配时,将第二待匹配的字符块的索引位置存储至临时栈中。

进一步地,判断子模块442判断临时栈中是否存有位于指针所指向的参考字符串中的第一索引位置中,判断子模块442具体用于,获取临时栈中存储的与有害模式串匹配的字符串的索引位置,索引位置包括:字符串的索引地址以及字符串的长度;

判断字符串的索引位置与指针是否满足以下公式:

指针所在的目标位置-指针中的第一距离<=字符串的索引位置<=指针所在的目标位置-指针中的第一距离+指针中的参考字符串的长度;

若字符串的索引位置与指针满足上述公式,则确定临时栈中存有位于指针所指向的参考字符串中的第一索引位置。

本实施例中,通过获取互联网服务器发送客户端待接受的gzip压缩数据流,对其进行霍夫曼解码,得到经过LZ77压缩的第一压缩数据流;触发多模式匹配窗口滑动,以推动LZ77解压滑动窗口在第一压缩数据流上的滑动,以实现采用LZ77解压滑动窗口对第一压缩数据流进行LZ77解压的同时,采用多模式匹配窗口对解压后得到的原始明文数据进行有害模式串的匹配;其 中,针对第一压缩数据流中的长指针,只做边界匹配,并判断临时栈是否存有位于指针所指向的参考字符串中的索引位置,若有,确定指针所在的目标位置中的索引位置并存储至临时栈中;在用多模式匹配窗口对解压后得到的原始明文数据进行有害模式串的匹配的过程中,获取原始明文数据中第i字节至第i+N-1字节组成的第一待匹配的字符块,先判断第一待匹配的字符块中各字符上是否设置有跳跃距离参数,根据判断结果确定是否跳跃,然后判断第一待匹配的字符块在预设的SHIFT表中是否存在对应的步长值,根据判断结果确定是否存在与第一待匹配的字符块对应的第二字符块匹配的有害模式串,且LZ77解压滑动窗口和多模式匹配窗口之间的距离小于预设距离阈值,从而实现边进行LZ77解压,边进行跳跃性的多模匹配检测,缩短了压缩数据流的入侵或有害代码检测时间,提高了客户端用户上网体验的速度。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

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