[发明专利]一种快速查询黑白名单的系统及方法有效
| 申请号: | 200610064555.8 | 申请日: | 2006-12-28 |
| 公开(公告)号: | CN101079042A | 公开(公告)日: | 2007-11-28 |
| 发明(设计)人: | 邓君 | 申请(专利权)人: | 腾讯科技(深圳)有限公司 |
| 主分类号: | G06F17/30 | 分类号: | G06F17/30 |
| 代理公司: | 深圳市顺天达专利商标代理有限公司 | 代理人: | 郭伟刚;蔡晓红 |
| 地址: | 518057广东省深圳市高新科*** | 国省代码: | 广东;44 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 快速 查询 黑白 名单 系统 方法 | ||
技术领域
本发明涉及计算机技术领域,更具体地说,涉及一种快速查询黑白名单的系统及方法。
背景技术
黑白名单是用于记录某些内容是否能通过的数据表,在白名单中的项即为可以通过的项,在黑名单中的项即为需阻止的项。通常在具体实现时,黑白名单记录在同一张数据表中,并用一个标志字段(flag)表示该项为黑名单中的项还是白名单中的项(比如flag=0为黑名单中的项,而flag=1为白名单中的项)。
例如对于网页浏览中的网址过滤,即URL过滤,通常使用URL作为数据库的关键字(KEY),并使用标志字段区分黑白名单。在网址过滤中,黑白名单一般需要支持域名分级和通配符(*)。
如图1所示,网址过滤典型的过滤方法是:
首先做全路径URL(例如http://a.b.c.d/dir/file.html)测试,如果从数据库中查询的flag=0,则表示该URL在黑名单,阻止对该URL的访问;如果flag=1,则表示该URL在白名单,对该URL的访问直接通过。
如果该URL在数据库中无记录则再测试该域名(http://a.b.c.d),如果从数据库中查询到flag=0,则阻止对URL的访问;如果flag=1,则对URL的访问直接通过。
如果域名(http://a.b.c.d)在数据库中也无记录,则开始做通配符(http://*.b.c.d)测试,如果从数据库中查询得到的flag=0,则阻止对URL的访问;如果flag=1,则对于URL的访问直接通过。如果在数据库中没有记录,则继续拆分域名做通配符(http://*.c.d)测试,如果还不在数据库中则继续拆分做通配符测试,直到只剩下最后一级。若此时还不在黑白名单中,则按照预定的过滤策略,确定是否阻止对URL的访问。
上述直接查询数据库实现黑白名单的方法,每测试一次都要查询一次数据库。由于在实际应用中,很少将全路径URL写入黑白名单中,在极端情况下,例如支持域名做两级星号通配符替换,需要查询4次数据库(一次全路径URL,一次全域名,一次一级星号替换,一次二级星号替换)。而频繁的数据库查询将造成对计算机资源的极大浪费。
如果将黑白名单项全部缓存到内存中,势必占用较多内存,不适合黑白名单较大的情况。
发明内容
本发明要解决的技术问题在于,针对上述的黑白名单查询中占用较多资源并且效率较低的问题,提供一种快速查询黑白名单的系统及方法。
本发明解决上述技术问题的技术方案是,提供一种快速查询黑白名单的系统,包括用于查询黑白名单中是否包括待测试关键字的查询单元,还包括:
数组创建单元,用于将黑白名单中的所有关键字分别作运算后根据运算值生成数组;
数组存储单元,用于存储所述数组创建单元创建的数组;
匹配单元,用于将待测试关键字作运算后将所述待测试关键字的运算值与所述数组存储单元中的数组进行比对,并在待测试关键字的运算值与所述数组匹配时,使查询单元查询黑白名单中是否存在待测试关键字;
其中所述数组创建单元进一步包括:
数组生成单元,用于生成数组,所述生成的数组的每一位都为0;
第一运算单元,用于依次将黑白名单中的每一关键字作运算;
第一拆分单元,用于将所述运算所得运算值的多个字节拆分为多组数值;
数组维护单元,用于将所述数组中与所述第一拆分单元拆分获得的多组数值对应的位分别设置为1;
所述匹配单元进一步包括:
第二运算单元,用于将待测试关键字作运算;
第二拆分单元,用于将待测试关键字运算值的多个字节拆分为多组数值;
比较单元,分别查询并判断所述数组中与拆分待测试关键字的运算值获得的多组数值对应的位是否为1,若所述数组中所有对应的位都为1,则确定待测试关键字的运算值与所述数组匹配,使查询单元查询黑白名单中是否存在待测试关键字;
所述系统还包括关键字拆分单元,用于在所述比较单元判断数组中对应的位中包括0且待测试关键字可拆分时,或者在查询单元确认所述待测试关键字不存在于黑白名单中且待测试关键字可拆分时,拆分所述待测试关键字,并使所述匹配单元将拆分后的待测试关键字的运算值进行拆分并与数组进行匹配,所述黑白名单中的关键字及待测试关键字为URL、域名或通配符替换后的域名。
在本发明所述的一种快速查询黑白名单的系统中,所述数组创建单元和匹配单元对关键字所作运算为哈希运算,所述运算值为哈希值,所述数组生成单元生成的数组中位的数量不小于黑白名单中关键字数量的2倍。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于腾讯科技(深圳)有限公司,未经腾讯科技(深圳)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200610064555.8/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种网页排序方法及装置
- 下一篇:甘蔗联合收割机





