一种数据过滤方法及设备与流程

文档序号:14686975发布日期:2018-06-15 04:05阅读:500来源:国知局

本发明的实施例涉及网络数据处理领域,尤其涉及一种数据过滤方法及设备。



背景技术:

统一资源定位符(Uniform Resource Locator,URL)过滤是深度安全检测领域的一个常见需求。基本的客户需求是:识别特定的URL,然后对报文执行特定的动作,如:阻断、重定向,或者记录日志等。举例说明:如果网络管理员希望内网用户上班时间不允许访问www.taobao.com,那么就会使用域名过滤。如果网络管理员希望内网用户任何时间都不允许访问带有“sports”、“体育”字样的URL,那么就会使用URL过滤。网络管理员的URL过滤配置条目数需求是成千上万的。实现上述需求的一个基础算法就是用于多模式匹配的AC算法。

现有技术中,由于过滤的关键字的多样性,用户通常无法精确表达自己想要过滤的域名,因此通常需要使用通配符,而AC算法与通配符“*”不兼容,所以实际处理中,要么只能转化成串行匹配,要么是将通配符“*”转化成正则表达式的语义来执行正则表达式匹配,即需要通过正则表达式对通配符“*”解码,转化成正则表达式的语义来执行正则表达式匹配,由于通配符“*”不能直接适用于AC算法,因此对数据过滤性能产生影响。

此外,基于URL过滤的基本需求,现有技术中提供的配置方法大都基于固定的可打印ASCII字符,因为域名或者URL的编码也的确限制了必须采用可见ASCII字符,造成数据过滤不能适应多语种的需求。



技术实现要素:

本发明的实施例提供一种数据过滤方法及设备,能够直接适用通配符过滤,保证对数据过滤的性能。

第一方面,提供一种数据过滤方法,包括:

主控设备获取至少一个需过滤的字符串,所述需过滤的字符串至少包括域名或URL关键词;

所述主控设备对所述至少一个需过滤的字符串通过AC算法编译生成DFA状态机,并将所述DFA状态机发送至转发设备;其中,所述DFA状态机对应的AC树中包含通配符,其中所述通配符设置于所述AC树中任意两个相邻状态节点之间,并且所述通配符匹配任意字符;

所述转发设备接收待匹配报文,依据所述DFA状态机的AC树对所述待匹配报文进行过滤。

第二方面,提供一种主控设备,包括:

获取单元,用于获取至少一个需过滤的字符串,所述需过滤的字符串至少包括域名或URL关键词;

处理单元,用于对所述获取单元获取的至少一个需过滤的字符串通过AC算法编译生成DFA状态机,其中,所述DFA状态机对应的AC树中包含通配符,其中所述通配符设置于所述AC树中任意两个相邻状态节点之间,并且所述通配符匹配任意字符;

发送单元,用于将所述DFA状态机发送至转发设备;以便所述转发设备依据所述DFA状态机的AC树对所述待匹配报文进行过滤。

第三方面,提供一种转发设备,包括:

接收单元,用于接收待匹配报文和DFA状态机;其中,所述DFA状态机对应的AC树中包含通配符,其中所述通配符设置于所述AC树中任意两个相邻状态节点之间,并且所述通配符匹配任意字符;处理单元,用于依据所述接收单元接收的DFA状态机的AC树对所述待匹配报文进行过滤。

在上述方案中,主控设备获取至少一个需过滤的字符串,所述需过滤的字符串至少包括域名或URL关键词;对所述至少一个需过滤的字符串通过AC算法编译生成DFA状态机,并将所述DFA状态机发送至转发设备;其中,所述DFA状态机对应的AC树中包含通配符,其中所述通配符设置于所述AC树中任意两个相邻状态节点之间,并且所述通配符匹配任意字符;转发设备接收待匹配报文,并依据所述DFA状态机的AC树对所述待匹配报文进行过滤,这样在保证数据过滤性能的同时,能够直接适用通配符过滤。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明的实施例提供的一种应用场景的结构图;

图2为本发明的实施例提供的一种数据过滤方法的流程示意图;

图3为本发明的实施例提供的一种AC数的结构图;

图4为本发明的实施例提供的一种主控设备的结构图;

图5为本发明的实施例提供的一种转发设备的结构图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。

首先对本申请的技术术语进行描述如下:

域名:(Domain Name),是由一串用“点”分隔的字符组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置,地理上的域名,指代有行政自主权的一个地方区域)。RFC1034和RFC1035对域名以及域名解析进行定义。

URL(Uniform Resource Locator):统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。RFC1738定义了URL的编址标准。

AC算法(Aho-Corasick):AC算法是一种用于多模式匹配的自动状态机算法。

UTF-8(8-bit Unicode Transformation Format,RFC 3629):是一种针对Unicode的可变长度字符编码,又称万国码。UTF-8用1到6个字节编码Unicode字符。用在网页上可以统一页面显示中文简体繁体及其它语言(如英文,日文,韩文)。

GB18030:国家标准GB18030-2005《信息技术中文编码字符集》是我国继GB2312-1980和GB13000.1-1993之后最重要的汉字编码标准,是我国计算机系统必须遵循的基础性标准之一。GB18030有两个版本:GB18030-2000和GB18030-2005。GB18030是GBK的取代版本,向下兼容包含了GB2312中的简体汉字,GBK中收录的中国少数民族字符,并新扩展了CJK字符(中日韩统一表意文字)。

ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。

DFA(Deterministic Finite Automaton,确定性有限状态机),是一种接受/拒绝符号的有限字符串并为每个输入字符串输出该自动机的唯一计算(或运行)的有限状态机。

本发明的实施例可以采用集中式或分布式设备部署方案,其中如图1所示,采用分布式部署方案时,本发明的实施例提供的应用场景包括主控设备11和转发设备12,其中主控设备11的输入参数是网络管理员配置的过滤规则,例如本申请中至少一个需过滤的字符串以及扩展的AC算法,输出参数是扩展的AC算法编译生成的DFA状态机;转发设备12的输入参数是DFA状态机以及待匹配报文,例如:待匹配报文可以为HTTP报文,或者从HTTP报文解析定界出的Host和URL部分字符串,输出是对待匹配报文的过滤动作,例如:未匹配放行、阻断、重定向或者记录日志等。采用分布式布局时主控设备11和转发设备12分别部署在不同的板卡上,采用集中式部署时,主控设备11和转发设备12也可以部署在在集中式设备上,其功能分别部署在不同的进程中实现。

基于上述的实施场景,本申请的实施例提供一种数据过滤方法,参照图2所示,包括如下步骤:

101、主控设备获取至少一个需过滤的字符串,需过滤的字符串至少包括域名或URL关键词。

其中,为避免需过滤的字符串可以通过网络管理员录入,由于网络管理员的所熟悉的语言不同,需要过滤的域名或URL关键词通常也是采用不同语种的,为适应多语种的录入,在录入需过滤的字符串后,主控设备将需过滤的字符转换为ASCII规则的字符,以便主控设备对所述ASCII规则的字符执行步骤102。示例性的,主控设备先将网络管理员录入的需过滤的字符串转化成ASCII特征的字符。如果需过滤的字符串是印欧语系的规则,例如过滤sports,那么向DFA状态机对应的AC树中添加的就只有1个关键词sports;如果需过滤的字符串是汉语,例如过滤“专利”,那么向DFA状态机对应的AC树中添加的字符就需要转换成UTF-8和GB18030两种字符编码在URL中可能的编码(UTF-8:

%E4%B8%93%E5%88%A9,GB18030:%D7%A8%C0%FB)。这样,待匹配报文的URL中如果出现了“专利”字样,无需解码也可以被匹配成功。

102、主控设备对至少一个需过滤的字符串通过AC算法编译生成DFA状态机,并将DFA状态机发送至转发设备;其中,DFA状态机对应的AC树中包含通配符,其中通配符设置于所述AC树中任意两个相邻状态节点之间,并且通配符匹配任意字符。

步骤102中AC算法为扩展的AC算法,其中AC算法与现有技术类似采取构建树状图(AC树)的过程,只不过在这一过程中,将通配符“*”作为一种特殊的字符输入,设置于AC树中任意两个相邻状态节点之间,参照图3所示,在状态节点0和2之间配置通配符“*”。此外,仍然采用最大前缀重用原则。

此外,在主控设备根据所述需过滤的字符通过AC算法在AC树中配置“终结终状态节点”;终结终状态节点用于指示转发设备停止对待匹配报文进行过滤;示例性的,如果一个目标字符串配置的过滤动作是“阻断”,那么如果在待匹配报文中匹配到该目标字符串,则待匹配报文后续的检测也没有意义,应该尽快跳出检测,这种目标字符串标识成“终结终状态”,如图3所示,sport*、*sina*、*qq*为需要“阻断”,则状态节点16、17、10配置为终结终状态节点。

在另一种实施方式中,在主控设备根据需过滤的字符通过AC算法在AC树中配置吸收状态节点,其中Link(s->t)=“*”,其中,t为吸收状态节点,s为吸收状态节点的父状态节点,*为通配符。在进行匹配DFA状态机时,吸收状态节点可以吸收任意多个字符,例如图3中状态节点2。如果吸收节点本身是终状态,从树中删除此状态,让其父状态节点成为终状态。

103、转发设备接收待匹配报文,依据DFA状态机的AC树对待匹配报文进行过滤。

具体的,依据步骤102中主控设备配置的DFA状态机,当匹配到“终结终状态节点”时,步骤103具体为依据DFA状态机的AC树在匹配到待匹配报文中的任一字符位于终结终状态节点之前后,停止对待匹配报文进行过滤,如图3中所示,sport*、*sina*、*qq*为需要“阻断”,则匹配到状态节点16、17、10之前的字符时,停止对匹配报文进行过滤。

依据步骤102中主控设备配置的DFA状态机,当匹配到“吸收状态节点”时,转发设备依据DFA状态机的AC树在匹配到待匹配报文中的任一字符后匹配吸收状态节点后的字符。

此外,由于引入了通配符“*”,因此网络管理员如果要配置“包含匹配”的语义,所配置的字符串就会在前后自动加上“*”,从而在匹配到任一字符后,直接匹配吸收状态节点后的字符,而不必在设置现有技术中的失败态映射。

此外,在计算DFA状态机时,在状态节点s下输入字符c的输出并不唯一,而是一个集合了(可能结果为空集,或者出现多个)。以sport*、*sina*、*qq*为需要“阻断”以*sohu*、*inna*需要记录日志为例编译出DFA状态机的AC树如图3所示,在对待匹配报文进行匹配时,匹配过程参照如下表所示:

此外,转发设备接收待匹配报文后,可以对待匹配的内容定界,在进行过滤,具体的,转发设备根据需过滤的字符串的长度从待匹配报文中的各行中获取至少一个待匹配的字符串,然后根据DFA状态机的AC树对至少一个待匹配的字符串进行过滤。

举例说明如下:由于AC算法(DFA模式下)的效率与搜索关键字数目无关,只与待搜索的目标字符串(需过滤的字符串)长度有关,因此对于待匹配报文(可以为输入的HTTP报文),先根据\\n(换行)完成逐行的定界解析,即获取范围更小的待匹配的字符串再传入AC算法的DFA状态机进行匹配,这样可以大大提升匹配效率。以下面的待匹配报文为例,经过定界解析后,待搜索的待匹配的字符串(目标文本)仅为

“eip.maipu.com”。这远比搜索整个待匹配报文的效率要高。

GET/HTTP/1.1

Accept:application/x-ms-application,image/jpeg,

application/xaml+xml,image/gif,image/pjpeg,application/x-ms-xbap,

*/*

Accept-Language:zh-cn

User-Agent:Mozilla/4.0(compatible;MSIE 7.0;Windows NT 6.1;

WOW64;Trident/4.0;SLCC2;.NET CLR 2.0.50727;.NET CLR

3.5.30729;.NET CLR 3.0.30729;Media Center PC 6.0;

InfoPath.3;.NET4.0C;.NET4.0E)

Accept-Encoding:gzip,deflate

Host:eip.maipu.com

Connection:Keep-Alive

在上述方案中,主控设备获取至少一个需过滤的字符串,所述需过滤的字符串至少包括以下任一:域名、URL关键词;对所述至少一个需过滤的字符串通过AC算法编译生成DFA状态机,并将所述DFA状态机发送至转发设备;其中,所述DFA状态机对应的AC树中包含通配符,其中所述通配符设置于所述AC树中任意两个相邻状态节点之间,并且所述通配符匹配任意字符;转发设备接收待匹配报文,并依据所述DFA状态机的AC树对所述待匹配报文进行过滤,这样在保证数据过滤性能的同时,能够直接适用通配符过滤。

参照图4所示,提供一种主控设备,包括:

获取单元41,用于获取至少一个需过滤的字符串,所述需过滤的字符串至少包括域名或URL关键词;

处理单元42,用于对所述获取单元41获取的至少一个需过滤的字符串通过AC算法编译生成DFA状态机,其中,所述DFA状态机对应的AC树中包含通配符,其中所述通配符设置于所述AC树中任意两个相邻状态节点之间,并且所述通配符匹配任意字符;

发送单元43,用于将所述DFA状态机发送至转发设备;以便所述转发设备依据所述DFA状态机的AC树对所述待匹配报文进行过滤。

在一种示例性的方案中,处理单元42还用于将所述获取单元41获取的所述需过滤的字符转换为ASCII规则的字符,以便对所述ASCII规则的字符通过AC算法编译生成DFA状态机。

在一种示例性的方案中,处理单元42具体用于根据所述需过滤的字符通过AC算法在AC树中配置吸收状态节点,其中Link(s->t)=“*”,其中,t为所述吸收状态节点,s为所述吸收状态节点的父状态节点,*为所述通配符。

在一种示例性的方案中,所述处理单元42具体用于根据所述需过滤的字符通过AC算法在AC树中配置终结终状态节点;所述终结终状态节点用于指示所述转发设备停止对所述待匹配报文进行过滤。

参照图5所示,一种转发设备,包括:

接收单元51,用于接收待匹配报文和DFA状态机;其中,所述DFA状态机对应的AC树中包含通配符,其中所述通配符设置于所述AC树中任意两个相邻状态节点之间,并且所述通配符匹配任意字符;

处理单元52,用于依据所述接收单元接收的DFA状态机的AC树对所述待匹配报文进行过滤。

在一种示例性的方案中,处理单元52还用于根据所述需过滤的字符串的长度从所述待匹配报文中的各行中获取至少一个待匹配的字符串,以便根据所述DFA状态机的AC树对所述至少一个待匹配的字符串进行过滤。

在一种示例性的方案中,所述处理单元52具体用于依据所述DFA状态机的AC树在匹配到所述待匹配报文中的任一字符后匹配所述吸收状态节点后的字符,其中Link(s->t)=“*”,t为所述吸收状态节点,s为所述吸收状态节点的父状态节点,*为所述通配符。

在一种示例性的方案中,所述处理单元52具体用于依据所述DFA状态机的AC树在匹配到待匹配报文中的任一字符位于终结终状态节点之前后,停止对所述待匹配报文进行过滤,所述终结终状态节点用于指示所述转发设备停止对所述待匹配报文进行过滤。

其中上述主控设备与转发设备用于实施例上述的数据过滤方法,因此其产生的技术效果与上述方法实施例相同,这里不再赘述。

需要说明的是,主控设备中获取单元、处理单元可以为单独设立的处理器,也可以集成在控制器的某一个处理器中实现,此外,也可以以程序代码的形式存储于控制器的存储器中,由控制器的某一个处理器调用并执行以上各单元的功能。这里所述的处理器可以是一个中央处理器

(Central Processing Unit,CPU),或者是特定集成电路(Application Specific Integrated Circuit,ASIC),或者是被配置成实施本申请实施例的一个或多个集成电路。发送单元可以为接口电路或者数据发送装置。类似的,转发设备中处理单元可以为单独设立的处理器,此外,也可以以程序代码的形式存储于控制器的存储器中,由控制器的某一个处理器调用并执行以上各单元的功能。接收单元可以为接口电路或者数据接收装置。

本申请实施例还提供一种存储一个或多个程序的计算机存储介质,一个或多个程序包括指令,该指令当被计算机执行时,使计算机执行图2中的相关方法。

另外,还提供一种计算机程序产品,包括上述计算机可读媒体(或介质)。

应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

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

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

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(英文全称:read-only memory,英文简称:ROM)、随机存取存储器(英文全称:random access memory,英文简称:RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

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