一种基于窗口选择的URL过滤方法及系统与流程

文档序号:15930710发布日期:2018-11-14 01:36阅读:127来源:国知局

本发明涉互联网安全领域,尤其涉及一种基于窗口选择的url过滤方法及系统。

背景技术

基于哈希与黑名单的url过滤方法是一种常用的网页过滤方法,这种方法过滤速度快,实现简单,较为实用,并且能取得使人满意的效果,得到了广泛的应用。随着互联网的高速发展,网页的数量日益增长,url黑名单的规模越来越大,原有的许多过滤方法在黑名单规模不断增大时过滤速度显著降低,因此需要一种更为高效、面向大规模黑名单的url过滤方法,。



技术实现要素:

本发明的目的在于克服目前的基于哈希与黑名单的url过滤方法存在的上述缺陷,提出了一种基于窗口选择的url过滤方法,该方法以基于哈希与黑名单的url过滤方法为基础,采用动态窗口选择的方法进行两层过滤,在黑名单规模较大时具有较好的过滤效果。

为了实现上述目的,本发明提出了一种基于窗口选择的url过滤方法,该方法用于对一条输入url进行过滤,判断其是否在给定的黑名单中,所述方法包括:

步骤1)对黑名单进行第一层过滤预处理,所述第一层过滤预处理包括:采用动态窗口方式处理黑名单中的每条url,移动窗口使后缀哈希链表聚集,并且当一条url中存在多个等效窗口位置时,选择最左边的窗口位置;用窗口位置中的子串生成用于第一层过滤的第一后缀哈希表,第一前缀哈希表和第一跳转表;

步骤2)根据步骤1)生成的第一后缀哈希表,第一前缀哈希表和第一跳转表在黑名单中对输入url进行第一层过滤,第一层过滤时,窗口停止一次,则第一层过滤结束,转入步骤3);

步骤3)对黑名单进行第二层过滤预处理,所述第二层过滤预处理包括:采用动态窗口方式处理黑名单中的每条url,移动窗口使后缀哈希链表平均,用窗口位置中的子串生成用于第二层过滤的第二后缀哈希表,第二前缀哈希表及第二跳转表;

步骤4)根据步骤3)生成的第二层过滤的后第二后缀哈希表,第二前缀哈希表及第二跳转表对输入url进行第二层过滤,最终判定输入的url是否在黑名单中;

步骤5)输出该url的过滤结果。

上述技术方案中,所述步骤1)具体包括:

步骤1-1)生成空哈希表hash0,每个表项的值为0;生成三张空哈希表:第一后缀哈希表hash1、第二前缀哈希表prefix1及第二跳转表shift1;其中,所述第一后缀哈希表是基于窗口后缀生成的哈希链表;所述的第一前缀哈希表为基于窗口前缀生成的哈希链表;所述第一跳转表用来查询窗口向前安全跳转的字符数;

步骤1-2)选取黑名单中最短url长度为窗口长度,窗口初始位置在第一条url的最左边;

步骤1-3)计算窗口后缀哈希值h,查询哈希表项hash0[h],若为0,转到步骤1-4);若不为0,转到步骤1-5);

步骤1-4)窗口右移一个字符;若窗口未超出url右边界,转到步骤1-3);若窗口超出url右边界,将窗口重置回url最左边,转到步骤1-5);

步骤1-5)计算窗口后缀哈希值h,将hash0[h]值加1,若黑名单中还有url未处理,输入下一条url,转到步骤1-3),否则,转到步骤1-6);

步骤1-6)选取黑名单中最短url长度为窗口长度,窗口初始位置在第一条url最左边;

步骤1-7)计算窗口后缀哈希值h,若hash0[h]为0,转到步骤1-8),否则转到步骤1-9);

步骤1-8)窗口右移一个字符,转到步骤1-7);

步骤1-9)以该窗口中的子串更新第一后缀哈希表hash1,第一前缀哈希表prefix1和第一跳转表shift1;若黑名单中还有url未处理,输入下一条url,转到步骤1-7),否则,第一层过滤预处理结束,转入步骤2)。

上述技术方案中,所述步骤2)具体包括:

步骤2-1)选取黑名单中最短url长度为窗口长度,窗口初始位置在输入url最左边;

步骤2-2)计算窗口的后缀哈希值h,查询shift1[h],若大于零,将窗口向右滑动shift1[h]个字符,转到步骤2-3),否则,跳转到步骤2-4);

步骤2-3)若窗口未超出输入url右边界,转到步骤2-2),否则,判断输入url不被过滤,转入步骤5);

步骤2-4)计算窗口子串前缀哈希值url_prefix,对prefix1[h]链表中的每个前缀值pi,检查pi是否等于url_prefix,若存在相等的pi,则进入到步骤3),否则该url不被过滤,转入步骤5)。

上述技术方案中,所述步骤3)具体包括:

步骤3-1)生成三张空哈希表:第二后缀哈希表hash2、第二前缀哈希表prefix2及第二跳转表shift2;其中,所述第二后缀哈希表是基于窗口后缀生成的哈希链表;所述第二前缀哈希表为基于窗口前缀生成的哈希链表;所述第二跳转表用来查询窗口向前安全跳转的字符数;

步骤3-2)选取黑名单中最短url长度为窗口长度,窗口初始位置在第一条url最左边;

步骤3-3)计算窗口后缀哈希值h,查询hash2[h],若为空,转到步骤3-4),若不为空,转到步骤3-5);

步骤3-4)以该窗口中的子串更新第二后缀哈希表hash2,第二前缀哈希表prefix2及第二跳转表shift2,若黑名单中还有url未处理,输入下一条url,转到步骤3-3),否则,转入步骤4);

步骤3-5)窗口向右滑动一位,若窗口未超出url右边界,转到步骤3-3);否则,将窗口移到url最左边,转到步骤3-4)。

上述技术方案中,所述步骤4)具体包括:

步骤4-1)选取黑名单中最短url长度为窗口长度,窗口初始位置在输入url最左边;

步骤4-2)计算窗口的后缀哈希值h,查询shift2[h],若大于零,将窗口向右滑动shift2[h]个字符,转到步骤4-3),否则,跳转到步骤4-4);

步骤4-3)若窗口未超出输入url右边界,转到步骤4-2);否则,输入url不被过滤,转入步骤5);

步骤4-4)计算窗口子串前缀哈希值url_prefix,对hash2[h]链表中的url链中的第i个url,检查prefix2[i]是否等于url_prefix,若不存在相等的i,该url不被过滤,转入步骤5);否则,进一步比对输入url与hash2[h]链表中的命中url是否相同,如果相同,则该url在黑名单中,否则,该url不被过滤。

一种基于窗口选择的url过滤系统,包括存储器、处理器和存储在存储器上的并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法的步骤:

步骤1)对黑名单进行第一层过滤预处理,所述第一层过滤预处理包括:采用动态窗口方式处理黑名单中的每条url,移动窗口使后缀哈希链表聚集,并且当一条url中存在多个等效窗口位置时,选择最左边的窗口位置;用窗口位置中的子串生成用于第一层过滤的第一后缀哈希表,第一前缀哈希表和第一跳转表;

步骤2)根据步骤1)生成的第一后缀哈希表,第一前缀哈希表和第一跳转表在黑名单中对输入url进行第一层过滤,第一层过滤时,窗口停止一次,则第一层过滤结束,转入步骤3);

步骤3)对黑名单进行第二层过滤预处理,所述第二层过滤预处理包括:采用动态窗口方式处理黑名单中的每条url,移动窗口使后缀哈希链表平均,用窗口位置中的子串生成用于第二层过滤的第二后缀哈希表,第二前缀哈希表及第二跳转表;

步骤4)根据步骤3)生成的第二层过滤的后第二后缀哈希表,第二前缀哈希表及第二跳转表对输入url进行第二层过滤,最终判定输入的url是否在黑名单中;

步骤5)输出该url的过滤结果。

本发明的优势在于:

通过本发明的方法可以对输入url进行精确匹配,以判定其是否出现在给定的url黑名单集合中,尤其在黑名单规模较大时效果良好。

附图说明

图1为本发明的基于窗口选择的url过滤方法示意图;

图2为本发明实施例在一种常见应用场景下的url过滤示意图。

具体实施方式

下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。

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

为便于对本发明实施例的理解,下面将结合附图以具体实施例做进一步的解释说明,实施例并不构成对本发明实施例的限定。

如图1所示,一种基于窗口选择的url过滤方法,该方法在已知一个url黑名单集合,对一条输入url进行过滤,判断其是否在给定的黑名单中,所述方法包括:

步骤1)对黑名单进行第一层过滤预处理,所述第一层过滤预处理包括:采用动态窗口方式处理黑名单中的每条url,移动窗口使后缀哈希链表聚集,并且当一条url中存在多个等效窗口位置时,选择最左边的窗口位置;用窗口位置中的子串生成用于第一层过滤的第一后缀哈希表,第一前缀哈希表和第一跳转表,具体包括:

步骤1-1)生成空哈希表hash0,每个表项的值为0;生成三张空哈希表:第一后缀哈希表hash1、第二前缀哈希表prefix1及第二跳转表shift1;其中,所述第一后缀哈希表是基于窗口后缀生成的哈希链表;所述的第一前缀哈希表为基于窗口前缀生成的哈希链表;所述第一跳转表用来查询窗口向前安全跳转的字符数;

步骤1-2)选取黑名单中最短url长度为窗口长度,窗口初始位置在第一条url的最左边;

步骤1-3)计算窗口后缀哈希值h,查询哈希表项hash0[h],若为0,转到步骤1-4);若不为0,转到步骤1-5);

步骤1-4)窗口右移一个字符;若窗口未超出url右边界,转到步骤1-2);若窗口超出url右边界,将窗口重置回url最左边,转到步骤1-5);

步骤1-5)计算窗口后缀哈希值h,将hash0[h]值加1,若黑名单中还有url未处理,输入下一条url,转到步骤1-3),否则,转到步骤1-6);

步骤1-6)选取黑名单中最短url长度为窗口长度,窗口初始位置在第一条url最左边;

步骤1-7)计算窗口后缀哈希值h,若hash0[h]为0,转到步骤1-8),否则转到步骤1-9);

步骤1-8)窗口右移一个字符,转到步骤1-7);

步骤1-9)以该窗口中的子串更新后缀哈希表hash1,前缀哈希表prefix1和跳转表shift1;若黑名单url集合中还有url未处理,输入下一条url,转到步骤1-7),否则,第一层过滤预处理结束,转入步骤2);

步骤2)根据步骤1)生成的第一后缀哈希表hash1,第一前缀哈希表prefix1和第一跳转表shift1在黑名单集合中对输入url进行第一层过滤,第一层过滤时,窗口停止一次,则第一层过滤结束,转入步骤3);

通过第一层过滤可滤除多数不在黑名单中的输入url,所述步骤2)具体包括:

步骤2-1)选取黑名单集合中最短url长度为窗口长度,窗口初始位置在输入url最左边;

步骤2-2)计算窗口的后缀哈希值h,查询shift1[h],若大于零,将窗口向右滑动shift1[h]个字符,转到步骤2-3),否则,跳转到步骤2-4);

步骤2-3)若窗口未超出输入url右边界,转到步骤2-2),否则,判断输入url不被过滤;转入步骤5);

步骤2-4)计算窗口子串前缀哈希值url_prefix,对prefix1[h]链表中的每个前缀值pi,检查pi是否等于url_prefix,若存在相等的pi,则进入到步骤3),否则该url不被过滤,转入步骤5);

步骤3)对黑名单进行第二层过滤预处理,所述第二层过滤预处理包括:采用动态窗口方式处理黑名单中的每条url,移动窗口使后缀哈希链表平均,用窗口位置中的子串生成用于第二层过滤的第二后缀哈希表hash2,第二前缀哈希表prefix2及第二跳转表shift2,具体包括:

步骤3-1)生成三张空哈希表:第二后缀哈希表hash2、第二前缀哈希表prefix2及第二跳转表shift2;其中,所述第二后缀哈希表是基于窗口后缀生成的哈希链表;所述第二前缀哈希表为基于窗口前缀生成的哈希链表;所述第二跳转表用来查询窗口向前安全跳转的字符数;

步骤3-2)选取黑名单中最短url长度为窗口长度,窗口初始位置在第一条url最左边;

步骤3-3)计算窗口后缀哈希值h,查询hash2[h],若为空,转到步骤3-4),若不为空,转到步骤3-5);

步骤3-4)以该窗口中的子串更新第二后缀哈希表hash2,第二前缀哈希表prefix2及第二跳转表shift2,若黑名单中还有url未处理,输入下一条url,转到步骤3-3),否则,转入步骤4);

步骤3-5)窗口向右滑动一位,若窗口未超出url右边界,转到步骤3-3);否则,将窗口移到url最左边,转到步骤3-4)。

步骤4)根据步骤3)生成的第二层过滤的第二后缀哈希表hash2,第二前缀哈希表prefix2及第二跳转表shift2对输入url进行第二层过滤,最终判定输入的url是否在黑名单中,具体包括:

步骤4-1)选取黑名单中最短url长度为窗口长度,窗口初始位置在输入url最左边;

步骤4-2)计算窗口的后缀哈希值h,查询shift2[h],若大于零,将窗口向右滑动shift2[h]个字符,转到步骤4-3),否则,跳转到步骤4-4);

步骤4-3)若窗口未超出输入url右边界,转到步骤4-2);否则,输入url不被过滤,转入步骤5);

步骤4-4)计算窗口子串前缀哈希值url_prefix,对hash2[h]链表中的url链中的第i个url,检查prefix2[i]是否等于url_prefix,若不存在相等的i,该url不被过滤,转入步骤5);否则,进一步比对输入url与hash2[h]链表中的命中url是否相同,如果相同,则判定该url在黑名单中,否则,该url不被过滤;

步骤5)输出该url的过滤结果。

图2为本发明实施例在一种常见应用场景下的url过滤示意图。用户在访问互联网时,防火墙根据预先设置好的黑名单,对用户访问的内容进行过滤,把符合安全策略的访问流量放过,对不符合安全策略的访问流量进行阻断,实现对用户访问的url的过滤。传统的url过滤方法在黑名单规模较大时性能明显下降,本发明的方法在黑名单规模较大时效果良好。

以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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