一种实现关键字对匹配的系统及方法与流程

文档序号:12719986阅读:1060来源:国知局
一种实现关键字对匹配的系统及方法与流程

本发明属于网络防护技术领域,特别涉及一种实现关键字对匹配的系统及方法。



背景技术:

常见的网络攻击方式是在命令中带有特定的攻击代码。现有算法实现的基本原理是把经过处理的数据包(“文本”)和定义好的规则相匹配,来搜索判断是否有入侵发生。匹配的方式为一次性匹配所有规则(单个关键字匹配)。

现有的规则匹配方式是一次性匹配所有规则(单个关键字匹配),无法实现关键字对(多个关键字)匹配,有待改进。



技术实现要素:

本发明的目的,在于提供一种实现关键字对匹配的系统及方法,其可实现多个关键字匹配。

为了达成上述目的,本发明的解决方案是:

一种实现关键字对匹配的系统,包括:

数据采集模块,用于从web服务器获取关键字对规则;以及,

数据分析模块,用于将数据包与规则进行匹配,返回结果集,根据结果集分析是否匹配触发。

一种实现关键字对匹配的方法,包括如下步骤:

步骤1,web服务器获取定义好的关键字对形式的规则,并存入数据库中;

步骤2,将步骤1中关键字对形式的规则拆分为单个关键字与间距,其中,间距表示两个关键字间的字符数;

步骤3,将数据包内容逐词与单个关键字进行匹配,根据高位运算判断数据包内容是否为汉字,得到匹配到的关键字末端在文本中所处的字符数byteNum,以及关键字在文本中所在的位置index,将结果保存到结果集;

步骤4,根据最近一次匹配到的关键字的位置byteNum1,以及遍历中匹配到的关键字的位置byteNum2,得到distance=byteNum1-byteNum2+byteNum,判断distance是否在定义的规则的间距范围内,若是则表示匹配触发,上报结果,否则返回步骤3。

上述步骤3中,在逐词匹配过程中,判断最近一次匹配得到的关键字是否属于子规则集合中,若是则遍历之前匹配到的关键字组,判断子规则集合中的另外一个关键字是否存在于遍历得到的关键字组中,转步骤4,否则返回步骤3。

上述步骤3中,高位运算的具体过程是:

(1)字符数byteNum自增1;

(2)判断是否高位,如果不是高位则返回步骤(1);如果是高位,设置num值自增1,进一步判断下一位是否为高位,如果下一位不是高位,num值置0,如果下一位是高位,判断是否连续三个为高位,是的话为汉字,byteNum值不变,否则byteNum-1处理,表示还在判断是否为汉字;

(3)返回步骤(1),继续判断。

采用上述方案后,本发明具有如下特点:

(1)解决多个关键字搜索匹配问题;

(2)解决在指定间距范围内关键字对的匹配;

(3)提出了符合数字/英文字母/中文/常见符号等字符为一个间距单位的算法补充;

(4)单个关键字(子规则)在文本中出现的位置前后不影响匹配结果。

附图说明

图1是本发明的流程图;

图2是本发明中高位运算的流程图。

具体实施方式

以下将结合附图,对本发明的技术方案及有益效果进行详细说明。

本发明提供一种实现关键字对匹配的系统,包括:

数据采集模块,用于从web服务器获取关键字对规则;

数据分析模块,用于将数据包(文本)与规则进行匹配,返回结果集,根据结果集分析是否入侵(关键字匹配触发)。

如图1所示,本发明提供一种实现关键字对匹配的方法,包括如下步骤:

步骤1,web服务器获取定义好的关键字对形式的规则,并存入数据库中,其中,所述规则是策略中已经配置好的;

步骤2,将步骤1中关键字对形式的规则拆分为单个关键字(子规则)与间距,例如将”关键字1-关键字2-间距”拆分为”关键字1”,”关键字2”,”间距”,其中,间距表示两个关键字间的字符数;

步骤3,将数据包(文本)内容逐词与单个关键字(子规则)进行匹配,根据高位运算判断数据包(文本)内容是否为汉字,得到匹配到的关键字末端在文本中所处的字符数(byteNum),以及关键字在文本中所在的位置(index),将结果保存到结果集;

步骤4,在逐词匹配过程中,判断最近一次匹配得到的关键字是否属于子规则集合中,若是则遍历之前匹配到的关键字组,判断子规则集合中的另外一个关键字是否存在于遍历得到的关键字组中,转步骤5,否则返回步骤3继续匹配;

步骤5,引入间距处理:根据最近一次匹配到的关键字的位置(byteNum1),以及遍历中匹配到的关键字的位置(byteNum2),得到distance=byteNum1-byteNum2+byteNum,判断distance是否在定义的规则的间距范围内,其中byteNum为文本中后匹配到的关键字本身长度(长度计算方法也是根据高位运算判断是否为汉字,从而进行累计计数),若是则表示匹配触发,上报结果,否则返回步骤3。

配合图2所示,是本发明中高位运算的流程图,包括如下步骤:

(1)字符数byteNum自增1。

(2)判断是否高位,如果不是高位则返回步骤(1);如果是高位,设置num值自增1(在后面判断是否连续3个为高位),进一步判断下一位是否为高位。如果下一位不是高位,num值置0,如果下一位是高位,判断是否连续三个为高位,是的话为汉字,byteNum值不变,否则byteNum-1处理,表示还在判断是否为汉字。

(3)返回步骤(1),继续判断。

综合上述,本发明一种实现关键字对匹配的系统及方法,与现有方案相比有如下改进:

(1)现有方案只能匹配单个关键字,需要对这样的数据判断是否存在于关键字对的子规则(单个关键字)集里,同时判断其他子规则存在于遍历得到的历史匹配关键字组中,本发明获取到web的关键字对(如“key1-key2-distance”),在现有的基础上匹配到多个关键字;

(2)现有方案没有关键字间距的概念,本发明引入匹配到的关键字末端在数据包(文本)所处字符数,根据高位运算判断是否为汉字,弥补现有方案中无法智能识别汉字间距计数为1的不足。引入间距概念,实现在指定间距范围内是否存在匹配到多个关键字的判断。

以上实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明保护范围之内。

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