一种用于url过滤系统的url查找方法

文档序号:5288316阅读:893来源:国知局
专利名称:一种用于url过滤系统的url查找方法
技术领域
本发明涉及网络信息安全技术领域,具体涉及一种统一资源定位符 (Uniform Resource Locator, URL)的查找方法,适用于URL过滤系统。
背景技术
互联网作为全球最大的信息中心,正以惊人的速度发展壮大。它由数以亿 计的网站组成,每个网站都有一个唯一的标识,称为URL。互联网上的信息良 莠不齐,存在为数不少的宣扬暴力、色情、反动等不良信息的网站。访问这些 网站会对青少年的身心健康带来极大影响。另外,还存在一些包含恶意软件的 可疑网站,会威胁到用户的个人隐私甚至破坏用户的电脑。
如何保障互联网的安全,维护一个健康的网络环境,成为一个急需解决的 问题。许多网络安全措施介入其中。作为应用最广泛的一个措施,URL过滤系 统提供了一种简单而有效的方案防止用户访问不健康和恶意的网站。
URL过滤系统维护一个预先定义好的黑名单,其中包含需要屏蔽的网站的 URL集合。它首先从用户所发送的HTTP请求数据包中提取请求的URL。然后 査找这个URL是否在黑名单中。如果在黑名单中发现这个URL,则阻断这个 URL请求;否则,将数据包发送到目的服务器。
URL査找是URL过滤系统的一个核心操作。通常情况下,URL査找需要 考虑以下三个问题
1. URL查找必须快速,性能必须稳定,不受黑名单中URL数量日益增大 的影响而降低性能;
2. 存储黑名单中百万级别的URL字符串需要耗费巨大的存储空间,需要 一种有效的方法将这些URL压縮到一个合理的大小;
3. 对于URL过滤系统,URL查找必须支持前缀匹配。URL查找中涉及的 前缀匹配,具体指判断某一请求的URL (T[l…n])的前缀是否与黑名单中的某 一URL (p[l…m])完全匹配。
每个URL可以看成一个字符串。基于URL的语法格式,根据分隔符":〃" 和"/",可以将一个URL分解成scheme子项、host子项以及path子项,其中path子项可为空,也可有多项。査找中,如果某一请求的URL的前缀与黑名单 中的某一URL能够完全匹配,则该请求的URL需要被屏蔽掉。因此,支持前 缀匹配是准确、有效地屏蔽所请求的URL的关键。 现有的URL查找技术主要有两大类方法-
第一类是哈希的方法。这类方法的基本原理是将URL通过哈希函数映射到 特定的数据结构来加速查找。由于使用了不同的数据结构,研究者们提出了不 同的方法。在文献《Summary Cache: A Scalable Wide-Area Web Cache Sharing Protocol》中,Li Fan等人提出了将URL通过MD5函数映射到布鲁姆过滤器的 方法。利用布鲁姆过滤器可以快速判断一个URL是否在集合中。在文献 《Managing Routing Tables for URL Routers in Content Distribution Networks》中, Zornitza Genova等人用哈希函数将每个URL映射到一个哈希表的表项,这样每 个URL表示成一个相同长度的编码,URL査找操作通过査找哈希表来实现。
对于哈希方法,由于它们没有考虑URL的语法格式,而是将每个URL从 第一个字符到最后一个字符哈希成一个相同长度的编码,所以无法支持URL的 前缀匹配。
第二类是建立URL分解树的方法。这类方法的基本原理是根据URL的 语法格式,将每个URL分解为子项,然后建立一棵URL分解树。URL查找过 程是一个树的遍历过程,每次匹配树的一个子节点,直到匹配到叶节点。这类 方、 去最早在文献《URL Forwarding and Compression in Adaptive M^eb Caching》中 由B. Scott Michel等人提出来。
对于建立URL分解树这类方法,虽然能解决前缀匹配的问题,但是由于它 们使用了树的结构,所以URL的查找效率受到了制约。
本发明使用到的另一项重要己有技术是多字符串匹配。多字符串匹配,即 在文本串T [1…n]中找出模式串集合P = { Pl, p2,, pk }中的每个模式串Pi (134)的所有出现位置,其中T和pi都是在有限字母表上的字符序列。
在文献《A Fast Algorithm for Multi-Pattern Searching》中,Sun Wu等人提出 了 Wu-Manber方法,采用了跳跃不可能匹配的字符策略和HASH散列的方法, 加速匹配的进行。该方法包括一个预处理阶段和一个扫描阶段。
在预处理阶段,首先计算模式串集合P中最短的模式串长度,记为m。然 后,对所有模式串(仅考虑前m个字符组成的模式串)构建哈希表(记为HASH),跳转表(记为SHIFT)和前缀表(记为PREFIX)。 HASH表的每个表项指向最 后B个字符被哈希到该表项的模式串,如果有多个模式串被哈希到同一表项, 则釆用链式存储结构;SHIFT表用于在扫描文本串的时候,根据读入字符串决 定可以跳过的字符数;PREFIX表存储的是每个模式前B'个字符的哈希值。此 处,建立HASH表和PREFIX表所用到的哈希函数根据不同情况进行选择;B 和B'为正整数,其值根据实验情况择优选择。 在扫描阶段,按如下步骤进行
第(1)步设一指针q,指向文本串T的第m个字符;
第(2)步从当前指针往前的B-1个字符开始,向后扫描B个字符,使用
预处理阶段建立HASH表所用到的哈希函数,计算该B个字符的哈希值,得到
h;第(3)步查SHIFT表找到SHIFT[h]:如果大于0,则根据其值向后移动 指针q相应的长度,转到第(2)步;否则转到第(4)步;
第(4)步从当前指针往前的m-1个字符开始,向后扫描B'个字符,使 用预处理阶段建立PREFIX表所用到的哈希函数,计算这B,个字符的前缀哈希 值;
第(5)步查HASH表,找到HASH[h]的指针,遍历链表。对链表中的 每个模式串,如果它在PREFIX表的值与前缀哈希值相等,则将文本串和模式 串逐一字符进行比较,判断是否完全匹配。如完全匹配,则报告完全匹配位置q; 否则,不报告;
第(6)步判断指针q是否指向文本串的结束符,如指向结束符,则结束 过程;否则,将指针q向后移动一个字符,转到第(2)步。

发明内容
本发明针对上述己有URL查找方法存在的不足,将哈希的方法和多字符串 匹配的方法相结合,提出一种能很好的满足URL过滤系统性能和功能需求的 URL査找方法。本发明的查找方法,查找速度快、性能稳定;存储效率高,能 满足不断增大的URL黑名单的存储要求;支持前缀匹配。
本发明的一种用于URL过滤系统的URL查找方法的整体框架设计流程如 图i所示。具体操作步骤如下步骤一、压缩URL黑名单.
首先,将URL黑名单进行压缩,即基于URL的语法格式,用c位(c为一 个正整数,其值根据实验情况择优选择)的哈希函数将黑名单中的URL压缩成 (c/8)*n (n是各个URL分解出来的子项的数量)字节长度的字符串。具体操作 步骤如下
第(1)步基于URL语法格式,根据分隔符"://"和"/",将原始的URL 分解成scheme子项、host子项以及path子项,其中path子项可为空,也可有多 项;
第(2)步将第(1)步分解出的每个变长的host子项以及path子项,利 用c位的哈希函数压縮成c/8个字节的字符串。此处忽略scheme子项,即不对 scheme子项进行计算;
第(3)步将压缩后的各个子项按原有次序连接成一个字符串并存储,用 其代替原始的URL。
对黑名单中的每一个URL都采用上述方法进行处理,得到压缩后的黑名单。
步骤二、为压縮后的URL黑名单建立一个后缀表和一个前缀表
在步骤一的基础上,为压缩后的URL黑名单建立一个后缀表和一个前缀表。 具体操作步骤如下
首先计算压縮后的黑名单中URL的最短长度,记为m。然后对所有压縮后 的URL (仅考虑每个URL的前m个字符),建立一个后缀表(记为SUFFIX) 和一个前缀表(记为PREFIX)。后缀表和前缀表的建立方法采用文献《A Fast Algorithm for Multi-Pattern Searching》中介绍的Wu-Manber方法中的哈希表以及 前缀表的建立方法。后缀表的每个表项指向最后B个字符被哈希到该表项的 URL,如果有多个URL被哈希到同一表项,则采用链式存储结构。前缀表存储 的是每个模式前B'个字符的哈希值。B和B'为正整数,其值根据实验情况择优 选择。建立后缀表和前缀表所用到的哈希函数可根据不同情况进行选择。
步骤三、查找请求URL
在步骤二的基础上,判断一个请求的URL是否在黑名单中。本发明对文献 《A Fast Algorithm for Multi-Pattern Searching》中提出的Wu-Manber多字符串匹
配方法进行了改进,具体操作步骤如下
第(1)步使用步骤一中的压缩步骤将请求URL压縮成(c/8fn个字节的字符串,n是分解出的URL子项的数目;
第(2)步判断(c/8"n的值是否小于m,如果小于则报告"未发现",并 结束过程;否则转到第(3)步;
第(3)步使用步骤二建立后缀表所用到的哈希函数,计算压縮后的请求 URL中B个字符,即从第m-B+l个字符到第m个字符的哈希值h;
第(4)步使用步骤二建立前缀表所用到的哈希函数,计算压缩后的请求 URL前B'个字符的哈希值,记为"URL一前缀";
第(5)步判断SUFFIX[h]指针指向的URL是否为空,如果为空,则报 告"非发现",并结束过程;否则,转到第(6)步;
第(6)步检查SUFFIX[h]指针指向的URL在PREFIX表中的值是否等于 "URL—前缀"。如果不相等,转到第(7)步;如果相等,则将该URL与压縮 后的请求URL进行逐个字符的比较,如果压縮后的请求URL的前缀与SUFFIX[h] 指针指向的URL完全匹配,则报告"发现",并结束过程;否则,转到第(7) 步;
第(7)步移动SUFFIX[h]指针,指向下一个URL,判断是否为空,如果 为空,则报告"未发现",并结束过程;否则,转到第(6)步。
需要说明的是,URL查找方法也可以用其它多字符串匹配方法进行替换。 有益效果
与已有査找方法相比,本发明的一种用于URL过滤系统的URL查找方法 査找速度快、性能稳定;存储效率高,能满足不断增大的URL黑名单的存储要 求;支持前缀匹配。本发明适用于URL过滤系统,能够方便的实现对用户上网 行为的有效控制,还可以应用于其他网络应用,如搜索引擎、web缓存、第七层
交换等。


图1为本发明的整体框架设计流程图。
具体实施例方式
根据上述技术方案,下面结合附图和实施例对本发明进行详细说明。
假设黑名单中的URL为http :〃network. cs .bit. edu. cn/ students/
http :〃www. sina. com.cn/
http: 〃network. c s bit. edu. cn/research/
http :〃www. 163 .com/news/
请求的URL为
http :〃network. cs .bit. edu.cn/research/proj ects/ http:〃www.sina.com.cn/ http:〃www.baidu.com/ http:〃www. 163.com/sports/
步骤一、压缩URL黑名单
首先,将URL黑名单进行压缩。以"http:〃network.cs.bit.edu.cn/students/"
为例详细介绍
第(1 )步根据分隔符"〃 "和"/ ",将原始的URL "http:〃network.cs.bit.edu.cn/students/"被分解为四个子项,分别是scheme子 项"http", host子项"network.cs.bit.edu.cn", path子项"students";
第(2)步将第(O步分解出的每个变长的host子项"network.cs.bit.edu.cn" 以及path子项"students",利用32位的哈希函数(CRC32)压縮成4个字节的 字符串,分为为0x2336F04B和0xA4698DB2。此处忽略scheme子项,即不对 scheme子项进行计算。
第(3)步将0x2336F04B和0xA4698DB2两个子项按原有次序连接成8 个字节的字符串0x2336F04BA4698DB2,代替原始的URL地址。
通过上述的实施例可见,使用URL压缩方法,原始的需要38个字节才能 表示的URL被压縮成8个字节,极大减少了存储量。
对黑名单中的每一个URL都采用上述步骤进行处理,得到压縮后的黑名单 "http:〃www.sina.com.cn/",压缩后的结果为0x24BCB313; "http:〃network.cs.bit.edu.cn/research/",压縮后的结果为0x2336F04B57EB50C2; "http:〃www. 163.com/news/",压缩后的结果为0x3199F9FClDD39950。 步骤二、为压缩后的URL黑名单建立一个后缀表和一个前缀表 在步骤一的基础上,为压縮后的URL黑名单建立一个后缀表和一个前缀表。 具体操作步骤如下首先计算压縮后的黑名单中URL的最短长度m=4。然后对于所有压缩后的 URL (仅考虑每个URL的前4个字符),建立一个后缀表SUFFIX和一个前缀 表PREFIX。后缀表的每个表项指向最后B个字符被哈希到该表项的URL,如 果有多个URL被哈希到同一表项,则采用链式存储结构。前缀表存储的是每个 模式前B,个字符的哈希值。本例中,B=B,=2,建立后缀表和前缀表所用到的哈 希函数定义如下
unsigned short hash(unsigned char *url)
return (unsigned short) ((*url)《8 | *(url+l)); 步骤三、查找请求URL
在步骤二的基础上,判断一个请求的URL是否在黑名单中。
例l: i青求URL为"http:〃network.cs.bit.edu.cn/research/projects/",则具体
查找步骤如下
第(1)步使用步骤一中的压縮步骤将请求URL压缩成(c/8"n个字节的 字符串。本例中,c=32, n=3,因此"http:〃network.cs.bit.edu.cn/research/projects〃, 被压縮成12个字节的字符串0x2336F04B57EB50C25C93B3A4;
第(2)步(c/8)*n=12, m=4, (c/8)*n的值不小于m,转到第(3)步;
第(3)步B=2, m=4,使用步骤二建立后缀表所用到的哈希函数,计算 出的哈希值h-61515;
第(4)步:B,-2,使用步骤二建立前缀表所用到的哈希函数,计算出的"URI^ 前缀"的值为9014;
第(5)步h=61515, SUFFIX[h]指针指向的URL (0x2336F04BA4698DB2) 不为空,转到第(6)步;
第(6)步h=61515, SUFFIX[h]指针指向的URL (0x2336F04BA4698DB2) 在前缀表PREFIX中的值等于"URL—前缀"。将SUFFIX[h]指针指向的URL (0x2336F04BA4698DB2 ) 与压缩后 的请求 URL (0x2336F04B57EB50C25C93B3A4)进行逐个字符的比较。压縮后的请求URL 的前缀与SUFFIX[h]指针指向的URL不完全匹配,转到第(7)步;
第(7)步h-61515,移动SUFFIX[h]指针,指向下一个URL(0x2336F04B57EB50C2),不为空,转到第(6)步;
第(6)步SUFFIX[h]指针指向的URL (0x2336F04B57EB50C2)在前缀 表PREFIX中的值等于"URL—前缀"。将SUFFIX[h]指针指向的URL (0x2336F04B57EB50C2) 与压缩后的请求 URL (0x2336F04B57EB50C25C93B3A4)进行逐个字符的比较。压缩后的请求URL 的前缀与SUFFIX[h]指针指向的URL完全匹配,报告"发现",并结束过程。
例2:请求URL为"http:〃www.sina.com.cn/",则具体查找步骤如下
第(1)步使用步骤一中的压縮步骤将请求URL压缩成(c/8fn个字节的 字符串。本例中,c=32, n=l,因此"http:〃www.sina.com.cn/"被压缩成4个字 节的字符串0x24BCB313;
第(2)步(c/8)*n=4, m=4, (c/8)*n的值不小于m,转到第(3)步;
第(3)步B=2, m=4,使用步骤二建立后缀表所用到的哈希函数,计算 出的哈希值h—5843;
第(4)步:B,=2,使用步骤二建立前缀表所用到的哈希函数,计算出的"URI^ 前缀"的值为9404;
第(5)步h=45843, SUFFIX[h]指针指向的URL (0x24BCB313)不为空, 转到第(6)步;
第(6)步SUFFIX[h]指针指向的URL (0x24BCB313)在前缀表PREFIX 中的值等于"URL—前缀"。将SUFFIX[h]指针指向的URL (0x24BCB313)与 压缩后的请求URL (0x24BCB313)进行逐个字符的比较。压縮后的请求URL 的前缀与SUFFIX[h]指针指向的URL完全匹配,报告"发现",并结束过程。 例3:请求URL为"http:〃www.baidu.com/",则具体査找步骤如下 第(1)步使用步骤一中的压縮步骤将请求URL压縮成(c/8)气个字节的 字符串。本例中,c=32, n=l,因此"http:〃www.baidu.com/"被压縮成4个字节 的字符串0xl71BC5OD;
第(2)步(c/8)*n=4, m=4, (c/8)*n的值不小于m,转到第(3)步; 第(3)步B=2, m=4,使用步骤二建立后缀表所用到的哈希函数,计算 出的哈希值h-50445;
第(4)步:B'-2,使用步骤二建立前缀表所用到的哈希函数,计算出的"URL— 前缀"的值为5915;第(5)步h=50445, SUFFIX[h]指针指向的URL为空,报告"非发现",
并结束过程。
例4:请求URL为"http://www.163.com/sports/",则具体査找步骤如下-
第(1)步使用步骤一中的压縮步骤将请求URL压縮成(c/8fn个字节的 字符串。本例中,c=32, n=2,因此"http:〃www.l63.com/sports/"被压缩成8个 字节的字符串0x3199F9FC73C9F91C;
第(2)步(c/8)*n=8, m=4, (c/8)*n的值不小于m,转到第(3)步;
第(3)步B=2, m=4,使用步骤二建立后缀表所用到的哈希函数,计算 出的哈希值h-63996;
第(4)步:B,=2,使用步骤二建立前缀表所用到的哈希函数,计算出的"URL— 前缀"的值为12697;
第(5)步h=63996, SUFFIX[h]指针指向的URL (0x3199F9FClDD39950)
不为空,转到第(6)步;
第(6)步h=63996, SUFHX[h]指针指向的URL (0x3199F9FClDD39950) 在前缀表PREFIX中的值等于"URLjtT缀"。将SUFFIX[h]指针指向的URL (0x3199F9FClDD39950)与压縮后的请求URL (0x3199F9FC73C9F91C)进行 逐个字符的比较。压缩后的请求URL的前缀与SUFFIX[h]指针指向的URL不完 全匹配,转到第(7)步;
第(7)步h=63996,移动SUFFIX[h]指针,指向下一个URL,为空,报 告"非发现",并结束过程。
由上述实施例可见,本发明的这种URL查找方法将哈希的方法和多字符串 匹配的方法相结合,克服了现有技术中的不足,在查找效率和内存消耗两方面 实现了高性能。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通 技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进,或者对 其中部分技术特征进行等同替换,这些改进和替换也应视为本发明的保护范围。
权利要求
1.一种用于URL过滤系统的URL查找方法,其特征在于将已有URL查找方法中的哈希方法与多字符串匹配的方法相结合,提出一种新的URL查找方法;其具体步骤如下步骤一、压缩URL黑名单首先,将URL黑名单进行压缩;步骤二、为压缩后的URL黑名单建立一个后缀表和一个前缀表在步骤一的基础上,为压缩后的URL黑名单建立一个后缀表和一个前缀表;步骤三、查找请求URL在步骤二的基础上,判断一个请求的URL是否在黑名单中。
2. 根据权利要求1所述的一种用于URL过滤系统的URL查找方 法,其特征在于步骤一中的压缩URL黑名单是基于URL的语法格式, 用c位的哈希函数将黑名单中的URL压缩成(c/8"n字节长度的字符 串,n是分解出的URL子项的数目;具体操作步骤如下第(1)步基于URL语法格式,根据分隔符"://"和"/",将 原始的URL分解成scheme子项、host子项以及path子项,其中path 子项可为空,也可有多项;第(2)步将第(1)步分解出的每个变长的host子项以及path 子项,利用c位的哈希函数压縮成c/8个字节的字符串;此处忽略 scheme子项,即不对scheme子项进行计算;第(3)步将压缩后的各个子项按原有次序连接成一个字符串 并存储,用其代替原始的URL;对黑名单中的每一个URL都采用上述方法进行处理,得到压縮 后的黑名单。
3. 根据权利要求1所述的一种用于URL过滤系统的URL査找方 法,其特征在于步骤二中的为压縮后的URL黑名单建立一个后缀表 和一个前缀表,具体操作步骤如下首先计算压縮后的黑名单中URL的最短长度,记为m;然后对 所有压縮后的URL的前m个字符建立一个后缀表,记为SUFFIX, 以及一个前缀表,记为PREFIX;后缀表和前缀表的建立方法采用Wu-Manber方法中的哈希表以及前缀表的建立方法;后缀表的每个表 项指向最后B个字符被哈希到该表项的URL,如果有多个URL被哈 希到同一表项,则采用链式存储结构;前缀表存储的是每个模式前B' 个字符的哈希值;B和B'为正整数,其值根据实验情况择优选择;建 立后缀表和前缀表所用到的哈希函数可根据不同情况进行选择。
4.根据权利要求1所述的一种用于URL过滤系统的URL查找方 法,其特征在于步骤三中的查找请求URL的具体操作步骤如下第(l)步使用步骤一中的压縮步骤将请求URL压缩成(c/8)*n 个字节的字符串,n是分解出的URL子项的数目;第(2)步判断(c/8"n的值是否小于m,如果小于则报告"未 发现",并结束过程;否则转到第(3)步;第(3)步使用步骤二建立后缀表所用到的哈希函数,计算压 縮后的请求URL中B个字符,即从第m-B+1个字符到第m个字符 的哈希值h;第(4)步使用步骤二建立前缀表所用到的哈希函数,计算压縮后的请求URL前B'个字符的哈希值,记为"URL—前缀";第(5)步判断SUFFIX[h]指针指向的URL是否为空,如果为空,则报告"非发现",并结束过程;否则,转到第(6)步;第(6)步检查SUFFIX[h]指针指向的URL在PREFIX表中的值是否等于"URL一前缀";如果不相等,转到第(7)步;如果相等,则将该URL与压缩后的请求URL进行逐个字符的比较,如果压縮后的请求URL的前缀与SUFFIX[h]指针指向的URL完全匹配,则报告 "发现",并结束过程;否则,转到第(7)步;第(7)步移动SUFFIX[h]指针,指向下一个URL,判断是否为空,如果为空,则报告"未发现",并结束过程;否则,转到第(6)步。
全文摘要
本发明涉及网络信息安全技术领域,具体涉及一种统一资源定位符(Uniform Resource Locator,URL)的查找方法。本发明将已有URL查找方法中的哈希方法与多字符串匹配的方法相结合,提出一种能很好的满足URL过滤系统性能和功能需求的URL查找方法。与已有查找方法相比,本发明的一种用于URL过滤系统的URL查找方法查找速度快、性能稳定;存储效率高,能满足不断增大的URL黑名单的存储要求;支持前缀匹配。本发明适用于URL过滤系统,能够方便的实现对用户上网行为的有效控制,还可以应用于其他网络应用,如搜索引擎、web缓存、第七层交换等。
文档编号H04L29/06GK101605129SQ200910087509
公开日2009年12月16日 申请日期2009年6月23日 优先权日2009年6月23日
发明者舟 周, 天 嵩, 贾云得 申请人:北京理工大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1