域名过滤名单存储、匹配方法及装置的制作方法

文档序号:7721350阅读:127来源:国知局
专利名称:域名过滤名单存储、匹配方法及装置的制作方法
技术领域
本申请涉及网络技术领域,尤其涉及一种基于树的域名过滤名单(黑/白名单)存储、匹配方法及装置。
背景技术
域名是指由某些字符、数字和符号组成的一串标示,一个特定的域名通常可以指向Internet上的一个特定站点,各机构、组织和公司等通常都会申请自己所需的一级域名所有权和使用权,每个一级域名对应的子域名则自动归其拥有,而网络用户通过这些域名便可以访问到这些机构、公司的门户站点。随着当今时代网络的飞速发展,Internet上日益聚集了数不胜数的站点,其中不可避免也产生了一些以危害用户利益来获利的网站,经常有一些恶意网站的域名会出现在受用户信任的安全网站的网页或者跳转地址中,用户在 不经意间从安全网站转而访问到恶意网站的页面,后果不堪设想,轻则使用户获取一些错误信息,重则造成经济损失,甚至造成难以估量的后果。因此,对提供访问服务的网站运营者来说,就有责任致力于避免访问本网站的用户受到恶意网站的安全威胁。具体来说,用户一般是通过浏览器的方式来访问网站页面,进而通过在当前页面点击链接或者在浏览器地址栏输入域名的方式来跳转到不同的页面,在这个过程中,有以下两种情景特别需要引起当前网站运营者的注意(I)用户在当前A站点(以域名a. com为例)的页面上进行操作,比如点击链接进入其他网站时,需要保证用户不会通过此链接进入有危害性的站点;(2)用户通过在浏览器地址栏中输入一个含有当前站点域名的URL(超链接),用户进行操作后,需要保证用户不会由此进入有危害性的站点。例如以下URL =http://
a.com/login, html target = http://pianzi. com,现实中很多网站者β通过这种方式来实现用户登录后直接跳转到目标地址,用户在进行登录操作后,都会认为这是A站点的页面,如果此时用户被链接到一个恶意网站,难免不会出现问题。针对上述情况,目前一般网站通常采取黑/白名单的策略来进行域名过滤。一般意义上的白名单通常是一些字符规则组成的列表,目标如果符合规范列表的某一条才可以获得一些权限;黑名单则恰好相反。在计算机领域中,许多网站和软件等都在使用过滤名单规则,如防火墙、杀毒软件等,而具体到网站的域名过滤技术中,黑/白名单的策略例如可以是下述配置(I)当前网站只允许跳转或链接到白名单中包含的网站;⑵不允许跳转或者链接到黑名单中包含的网站。进一步,就域名黑/白名单的具体实现方式来说,现有许多网站都采用正则表达式的方式来进行黑/白名单的匹配,一个白名单的正则表达式配置实例包括以下步骤SI、首先配置一份xml格式的白名单,将所有受信任的一级域名全部配置在xml文件中;S2、需要进行白名单匹配时,将上述的白名单全部转化为正则表达式,然后将其存储在内存中;
S3、从待检验的URL中截取出域名,然后将域名逐个与白名单中的规则做正则表达式匹配;如果这个域名最终与其中某一条规则相匹配,表示该域名在白名单内,系统终止匹配,认为该URL可以访问;如果没有一条规则匹配,则表示该域名不在白名单内,从而不允许访问该URL或作出警告。黑名单的配置方式在具体实现上与上述白名单非常类似,因此本申请说明书中下文一律以过滤名单来泛指黑/白名单。接续,上述按正则表达式实现的过滤名单配置方式虽然能够保证检查的准确性,然而也存在一定的缺陷。一方面,按条存储的过滤名单不便于维护,而且也占用存储空间;另一方面,正则表达式的匹配过程非常消耗资源,在遇到”、
等一些贪婪匹配符号时很容易造成大量的回溯,使检查效率出现成百万倍的下降;再一方面,正则表达式采用逐条规则匹配的方式,在面对目前网站内动辄数以十亿级的检查量时往往力不从心,甚至会在短时间内造成服务器硬件性能的急剧降低;另外,正则表达式本身还存在不易调试、编写困难的问题。

发明内容
本申请的实施例旨在提供一种域名过滤名单存储、匹配方法及装置,以解决常用的正则表达式逐条存储、匹配的域名过滤方式存在的上述问题。为实现上述目的,根据本申请实施例的第一方面,提供了一种由计算机实现的域名过滤名单存储方法,包括以下步骤Sll.将过滤名单内配置的域名按预定次序转换为字符串;S12.采用树的方式根据所述字符串生成名单树;在所述名单树中,所述字符串中的字符依次作为各级树节点,且所述树节点具有第一属性和第二属性,所述第一属性用于表示指向与当前字符后面一个字符对应的下一级树节点,所述第二属性用于表示所述字符串是否结束。根据本申请实施例的第二方面,上述域名过滤名单存储方法中所述步骤Sll包括将所述过滤名单内配置的域名按逆序转换为字符串。所述步骤S12包括S121.采用树的方式根据所述字符串中的字符依次生成各级树节点;S122.在根据所述字符串生成的最低一级树节点之后添加一个与字符”对应的标记树节点,得到所述名单树;其中,所述名单树中的树节点还具有第三属性,所述第三属性用于表示是否所有子域名均符合过滤条件;且所述标记树节点的第三属性的值表示所有子域名均符合过滤条件,所述名单树中其他树节点的第三属性的值表示非所有子域名均符合过滤条件。其中,所述步骤S121中根据所述字符串生成的最低一级树节点的第二属性的值表示字符串结束,所述名单树中其他树节点的第二属性的值表示字符串未结束。对应于上述根据本申请实施例第一方面的域名过滤名单存储方法,本申请的实施例还提供一种由计算机实现的域名过滤名单匹配方法,包括以下步骤S81.将待匹配的域名按预定次序转换为对象字符串; S82.依次将所述对象字符串中的对象字符与名单树的各级树节点所对应的目标字符进行比较,确认当前的对象字符与目标字符是否相符,如果不相符则确定匹配失败;如果相符则继续所述步骤S82比较下一对象字符,直至确认所述对象字符串中最后一个对象字符与对应的目标字符相符则确定匹配成功;
其中,所述名单树具有由所述目标字符构成的所述各级树节点,且所述树节点具有第一属性和第二属性,所述第一属性用于表示指向与当前字符后面一个字符对应的下一级树节点,所述第二属性用于表示所述字符串是否结束;所述目标字符包括将过滤名单内配置的域名按所述预定次序转换而成的字符串中的各个字符。对应于上述根据本申请实施例第二方面的域名过滤名单存储方法,本申请的实施例也提供一种由计算机实现的域名过滤名单匹配方法,包括以下步骤S91.将待匹配的域名按逆序转换为对象字符串;S92.依次将所述对象字符串中的对象字符与名单树的各级树节点所对应的目标字符进行比较,确认当前的对象字符与目标字符是否相符,如果不相符则确定匹配失败;如果相符则继续步骤S93 ; S93.确认当前比较的树节点的第三属性的值是否表示所有子域名均符合过滤条件,如果是则确定匹配成功,否则返回所述步骤S92匹配下一对象字符,直至所述对象字符串中的最后一个对象字符时继续步骤S94 ;S94.确认当前比较的树节点的第二属性的值是否表示字符串结束,如果是则确定匹配成功,否则确定匹配失败;其中,所述名单树具有由所述目标字符构成的所述各级树节点,且所述树节点具有第一属性、第二属性和第三属性,所述第一属性用于表示指向与当前字符后面一个字符对应的下一级树节点,所述第二属性用于表示所述字符串是否结束,所述第三属性用于表示是否所有子域名均符合过滤条件;所述目标字符包括将过滤名单内配置的域名按逆序转换而成的字符串中的各个字符以及与作为标记树节点的最低一级树节点对应的字符,,·’且所述标记树节点的第三属性的值表示所有子域名均符合过滤条件,所述名单树中其他树节点的第三属性的值表示非所有子域名均符合过滤条件。为实现上述目的,根据本申请实施例的第一方面,本申请的实施例还提供了一种域名过滤名单存储装置,包括转换单元,用于将过滤名单内配置的域名按预定次序转换为字符串;树生成单元,用于采用树的方式根据所述字符串生成名单树;在所述名单树中,所述字符串中的字符依次作为各级树节点,且所述树节点具有第一属性和第二属性,所述第一属性用于表示指向与当前字符后面一个字符对应的下一级树节点,所述第二属性用于表示所述字符串是否结束。根据本申请实施例的第二方面,上述域名过滤名单存储装置中所述转换单元是将所述过滤名单内配置的域名按逆序转换为字符串。其中,所述树生成单元包括节点设置子单元,用于采用树的方式根据所述字符串中的字符依次生成各级树节点;节点补充子单元,用于在根据所述字符串生成的最低一级树节点之后添加一个与字符”对应的标记树节点,得到所述名单树;其中,所述名单树中的树节点还具有第三属性,所述第三属性用于表示是否所有子域名均符合过滤条件;且所述标记树节点的第三属性的值表示所有子域名均符合过滤条件,所述名单树中其他树节点的第三属性的值表示非所有子域名均符合过滤条件。对应于上述根据本申请第一方面的域名过滤名单存储装置,本申请的实施例还提供一种域名过滤名单匹配装置,其包括
对象字符转换单元,用于将待匹配的域名按预定次序转换为对象字符串;字符比较单元,用于依次将所述对象字符串中的对象字符与名单树的各级树节点所对应的目标字符进行比较,确认当前的对象字符与目标字符是否相符,如果不相符则确定匹配失败;如果相符则继续比较下一对象字符,直至确认所述对象字符串中最后一个对象字符与对应的目标字符相符则确定匹配成功;其中,所述名单树具有由所述目标字符构成的所述各级树节点,且所述树节点具有第一属性和第二属性,所述第一属性用于表示指向与当前字符后面一个字符对应的下一级树节点,所述第二属性用于表示所述字符串是否结束;所述目标字符包括将过滤名单内配置的域名按所述预定次序转换而成的字符串中的各个字符。对应于上述根据本申请第二方面的域名过滤名单存储装置,本申请的实施例也提供了一种域名过滤名单匹配装置,其包括对象字符转换单元、字符比较单元、属性值确认单元,
所述对象字符转换单元用于将待匹配的域名按逆序转换为对象字符串;所述字符比较单元用于依次将所述对象字符串中的对象字符与名单树的各级树节点所对应的目标字符进行比较,确认当前的对象字符与目标字符是否相符,如果不相符则确定匹配失败;如果相符则由所述属性值确认单元确认所述字符比较单元当前比较的树节点的第三属性的值是否表示所有子域名均符合过滤条件,如果是则确定匹配成功,否则由所述字符比较单元继续匹配下一对象字符,直至所述对象字符串中的最后一个对象字符时,由所述属性值确认单元确认所述字符比较单元当前比较的树节点的第二属性的值是否表示字符串结束,如果是则确定匹配成功,否则确定匹配失败;其中,所述名单树具有由所述目标字符构成的所述各级树节点,且所述树节点具有第一属性、第二属性和第三属性,所述第一属性用于表示指向与当前字符后面一个字符对应的下一级树节点,所述第二属性用于表示所述字符串是否结束,所述第三属性用于表示是否所有子域名均符合过滤条件;所述目标字符包括将过滤名单内配置的域名按逆序转换而成的字符串中的各个字符以及与作为标记树节点的最低一级树节点对应的字符”;且所述标记树节点的第三属性的值表示所有子域名均符合过滤条件,所述名单树中其他树节点的第三属性的值表示非所有子域名均符合过滤条件。由上述技术方案可知,本申请的实施例采用树结构对域名的过滤名单进行存储,不仅能够节省大数量级过滤名单的存储空间,而且利用树结构的过滤名单进行匹配更能有效地缩短域名匹配所需的时间,从而大大提升了服务器的性能;并且树结构的域名过滤名单机制可以适用于任何平台,保证了准确性和良好的可调试性。另一方面,本申请的实施例采用以域名字符串为基础逆序构造名单树的方式,相应也按照逆序将待匹配域名的对象字符串与名单树的各级树节点进行比对,如此能够确保域名过滤名单内一级域名下的所有子域名迅速通过匹配,进一步大大缩短了域名匹配的平均时间,从而能够显著地提升服务器的性能。


图I为本申请域名过滤名单存储方法的实施例一流程图2为本申请域名过滤名单匹配方法的实施例一流程图;图3为本申请域名过滤名单存储方法的实施例二流程图;图4为图3实施例中所得到名单树实例的示意图;图5为本申请域名过滤名单匹配方法的实施例二流程图;图6为本申请域名过滤名单存储装置的实施例结构图;图7为本申请域名过滤名单匹配装置的实施例结构图。
具体实施例方式下面将详细描述本申请的具体实施例。应当注意,这里描述的实施例只用于举例说明,并不用于限制本申请。图I为本申请由计算机实现的域名过滤名单存储方法实施例一的流程图,如图所示,本实施例的域名过滤名单存储方法包括如下步骤SlOl S102。S101.将过滤名单内配置的域名按预定次序转换为字符串;过滤名单内配置的域名可能有多条,本步骤SlOl即针对其所配置的每条域名进行字符串的转换。S102.采用树的方式根据所述字符串生成名单树;在所述名单树中,所述字符串中的字符依次作为各级树节点,且所述树节点具有 第一属性和第二属性,所述第一属性用于表示指向与当前字符后面一个字符对应的下一级树节点,所述第二属性用于表示所述字符串是否结束。按照目前一级域名的规则,只允许英文26个字母和10个阿拉伯数字以及横杠可以用作域名不能出现在域名的最前或最后),并且域名最长不得超过63个字符,再加上域名中间的点”,实际上所有的域名其实都可视为上述38个字符的排列组合。因此,无论过滤名单内配置的域名有多少条,都可以通过构建唯一一个名单树(此时可以设置一个空白节点作为根节点,后续将有详细描述)来表示出所有域名,这也是本申请域名过滤名单存储及匹配方法的立意基础。图2为本申请由计算机实现的域名过滤名单匹配方法实施例一的流程图,本实施例的域名匹配方法与上述域名过滤名单存储方法实施例一相对应,如图2所示,其包括如下步骤S201 S203。S201.将待匹配的域名按预定次序转换为对象字符串;在一个实施例中,步骤SlOl之前还可以包括对待匹配的URL进行分析并从中截取出对象域名的步骤,其具体实现细节在本领域现有技术中多有揭示,此处不再赘述。另外,本步骤中转换待匹配域名的预定次序也即上述步骤SlOl中转换过滤名单内所配置域名的次序,需要说明的是,以逆序作为上述预定次序的情况将在下文实施例中详细阐述,而在以顺序作为上述预定次序的情况中,为了后续域名匹配过程的顺利进行,上述从URL中截取对象域名时可以进行特殊处理。例如,考虑到域名的构成规则,可以仅从URL中截取倒数第2(或3)个字符”之后的域名字符串作为对象字符串,如此一来便可以大大提高后续域名匹配的效率,这种域名截取方式在现有技术的域名逐条匹配机制中也有所涉及,因此此处也不再加以赘述。另外需要说明的是,在本申请说明书中需要对域名匹配过程加以说明时,为便于区分,统一将待匹配的域名(也称为对象域名)所对应的字符(串)称为对象字符(串),而将过滤名单内配置的域名(也称为目标域名)所对应的字符(串)称为目标字符(串)。S202.依次将对象字符串中的对象字符与名单树的各级树节点所对应的目标字符进行比较;本步骤所述的名单树具有由所述目标字符构成的各级树节点,且树节点具有第一属性和第二属性,其中,第一属性用于表示指向与当前字符后面一个字符对应的下一级树节点,第二属性用于表示字符串是否结束;进一步,所述的目标字符包括将过滤名单内配置的域名按预定次序转换而成的字符串中的各个字符。在一个实施例中,本步骤S202中用到的名单树可以直接是上述域名过滤名单存储方法实施例一中所生成的名单树。S203.确认当前的对象字符与目标字符是否相符;如果不相符则确定匹配失败;如果相符则转步骤S202比较下一对象字符,直至所述对象字符串中最后一个对象字符与对应的目标字符确认相符则确定匹配成功。 具体而言,如果对象域名符合过滤名单中配置的某条域名规则,那么前者所转换成的对象字符串便能够依次在名单树的各级树节点中得到匹配,从而确定域名匹配成功;反之,如果对象字符串在名单树的某级树节点中不能通过匹配,便能够确定该对象域名不符合过滤名单中配置的所有域名规则,从而确定域名匹配失败。由上所述可知,本申请的域名过滤名单匹配方法在对未知URL中包含的域名进行匹配时,无需与域名过滤名单中的域名进行逐条的匹配,而是逐级与名单树的树节点之间进行单纯的字符匹配,也即,由于过滤名单中配置的所有域名都构建在一个名单树中,所以单个对象域名匹配所需的时间可以视作只与过滤名单中配置的域名的平均字符长度(也即生成名单树的目标字符串的平均长度)相关,而与过滤名单中配置的域名个数无关。假设过滤名单中各域名的平均字符长度为n,则单个对象域名平均只需要η次匹配即可完成匹配过程。反观正则表达式的匹配过程,其针对单个对象域名的平均匹配时间则与过滤名单中域名的数量息息相关。假设过滤名单中的域名一共为m个,并且每执行一个正则表达式匹配的时间为P,则针对单个对象域名的匹配最快为一次匹配成功,其执行时间为P,最慢为全部不匹配,其执行时间为mp,取两者的平均值(m+l)p/2即为单个对象域名的平均匹配时间。由于P的值根据目前正则表达式的执行效率基本平稳,但过滤名单内规则域名的个数却随着业务和全球Internet上站点爆炸式的增长而不断增加,所以理论上m的上限值为目前全球的所有站点的域名总和,这一数据非常巨大,因此上述平均匹配时间表达式表明,正则表达式的匹配性能会存在极大的隐患。综上所述,由于与过滤名单中目标域名的个数相比,域名的长度通常是十分小的,并且一般域名的长度还存在着一定的限制(大多数域名都在10 20个字符之间),因此,与正则表达式的匹配过程相比,本申请的域名过滤名单匹配方法能够大大减少单个域名匹配所需的时间,相应地,其针对某个页面进行批量域名匹配的时间缩短效果也相当明显。另一方面,由于包括Java在内的各平台对树结构的支持都比较好,因此本申请的域名过滤名单存储方法及域名匹配方法可以很好的适用于各平台架构,同时能够保证很高程度的准确性和良好的可调试性。图3为本申请由计算机实现的域名过滤名单存储方法实施例二的流程图,如图所示,本实施例的域名过滤名单存储方法包括如下步骤S301 S304。S301.创建包括所有能够用作域名的可用字符的数组;上文实施例中已有述及,目前所有的域名都可以视作38个字符的一个排列组合,将这38个字符按一定次序排列,例如“O”、…“9”、“a”、…“ζ”、“· 并依次赋予O 37的数字下标(例如赋予字符“m”的数字标识为22),全部保存在一个数组内,如此便可利用指向该数组内一个数字引用来表示后续所生成 名单树的一个树节点。S302.将过滤名单内配置的某条域名按逆序转换为全部小写的字符串;转换为全部小写的字符串是因为域名不区分大小写,而按逆序进行转换是为了保证过滤名单内一级域名下的所有子域名能够快速地通过后续的匹配过程,这点在后文实施例中还有详细描述。以假设为过滤名单中配置的域名“A. com”为例,经过步骤S302的转换,得到的字符串即为“moc.a”。S303.采用树的方式根据字符串中的字符依次生成各级树节点;为保证过滤名单中配置的所有域名能够存储在一个树结构中,在一个实施例中,可以使用一个空白节点作为本步骤所生成树的根节点。前文实施例中提及,每个树节点都具有用于表示指向下一级树节点的第一属性和用于表示字符串是否结束的第二属性,以根节点为例,其第一属性即表示指向步骤S302中所得到逆序字符串的第一个字符,而第二属性(后文以“IsOver”来指代)的值则表示该节点并非自字符串的最后一个字符,例如可以给 “ IsOver” 赋值为 “false”。接续以步骤S302得到的字符串“moc. a”为例,本步骤S303即从根节点开始,首先读取字符串的第一个字符“m”,并根据该字符在步骤S301所建数组中的数字下标22,创建由根节点指向所得到数字下标22的数组引用作为根节点的第一级子节点,并照此方式一直生成到与字符串的最后一个字符“a”对应的最低一级子节点。与之前子节点不同的是,本步骤中所生成最低一级子节点(对应字符“a”)的“IsOver”属性值表示字符串到此结束,例如可以给“IsOver”赋值为“true”,因而表示从根节点到该节点的字符串已经成为一个完整的域名。S304.在根据字符串生成的最低一级树节点之后添加一个与字符”对应的标记树节点,得到名单树;如上所述,步骤S303所得到的树结构已经能够表示一个完整的域名,但为了保证该域名的所有子域名都能够通过名单树的匹配,最终的名单树在步骤S303所得到树结构的最低一级树节点之后还需要添加一个与字符”对应的标记树节点。在一个实施例中,可以设置所有树节点还具有用于表示是否所有子域名均符合过滤条件的第三属性(后文均以“anySub”指代),并且将上述标记树节点的第三属性的值设置为表示所有子域名均符合过滤条件,例如可以给“anySub”赋值为“true”。接续步骤S303中的具体实例,本步骤S304即在字符“a”之后添加一个字符”的节点,并给该节点的anySub属性赋值为“true”,从而表示该域名的所有子域名都在白名单内,也即表示a. com”均符合过滤名单的匹配要求。经过上述步骤S301 S304之后得到的名单树实例如图4所示,在该名单树中包括顶部一个根节点以及依次对应字符“m” (数字下标22)、“ο” (数字下标24)、“c” (数字下标12)、“. ” (数字下标36)、“a” (数字下标10)、“. ” (数字下标36)的六级子节点,并且所有树节点均具有用于表示指向下一级树节点的第一属性(可以参考图中箭头所示,而最后一级子节点的第一属性例如可以取值为空),并且均具有第二属性“IsOver”以及第三属性“anySub”。其中,第5级子节点(对应字符“a”)的“ IsOver”属性取值为“true”,从而表示以过滤名单中的域名转换而成的字符串到此结束,其他树节点的“IsOver”属性则均取值为“false” ;第6级子节点(对应字符”,也即标记树节点的“anySub”属性取值为“true”,从而表示域名“a. com”的所有子域名a. com”均符合过滤名单的匹配要求,其他树节点的“anySub”属性则均取值为“false”。图4所示名单树的树结构在各平台上都能得到很好的支持,在一个实施例中,名单树可以在Java平台上实现,而以Java语言实现的一个树节点代码如下所示
class Node {
private static final int capacity = 38; public Node口next;
public booleanisOver;
public booleananySub;
public NodeQ {
next = new Node [capacity];
}
}参考以上代码可以理解,与本领域惯用的对域名逐条进行存储的过滤名单管理方式相比,本实施例域名过滤名单存储方法的名单树具有较优的存储结构,在面对大数量级的域名所构成的过滤名单时,本实施例采用的树结构更加便于过滤名单的维护且能够节省存储空间,而且更重要的是有利于简化后续的域名匹配过程,关于这一点在域名过滤名单的匹配方法实施例中有明显体现。图5为本申请由计算机实现的域名过滤名单匹配方法实施例二的流程图,本实施例的域名过滤名单匹配方法与上述域名过滤名单存储方法实施例二相对应,如图5所示,其包括如下步骤S501 S505。S501、将待匹配的域名按逆序转换为全部小写的对象字符串;与前文实施例类似,本步骤之前还可以包括一个从待匹配的URL中截取出对象域名的步骤。以下面 4 个 URL 为例http ://ad. com/1, htm http: //c. ab. com/1, htm http: //ab. com/1, htm http: //b. com/1, htm ;经过域名截取以及本步骤S501的转换后,得到的4个对象字符串分别为moc. da ;moc. ba. c ;moc. ba ;moc. b。并且假设过滤名单中仅有一条规则域名AB. com。S502、依次将对象字符串中的第i个对象字符与名单树中第i级子节点对应的目标字符进行比较;本步骤用于确认名单树所有的第i级子节点中是否存在与当前比较的第i个对象字符相符的目标字符,如果不存在,则表明匹配失败,从而也能够确认对象域名的匹配失败;如果存在,则说明当前对象字符匹配成功,可以继续步骤S503进行后面的匹配过程。本步骤S502所述的名单树具有由所述目标字符构成的各级树节点,且这些树节点具有第一属性、第二属性(anySub)和第三属性(IsOver),其中,第一属性用于表示指向与当前字符后面一个字符对应的下一级树节点,第二属性用于表示字符串是否结束,第三属性用于表示是否所有子域名均符合过滤条件。并且,上述目标字符包括将过滤名单内配置的域名按逆序转换而成的字符串中的各个字符以及与作为标记树节点的最低一级树节点对应的字符”;且标记树节点的第三属性的值表示所有子域名均符合过滤条件,名单树中其他树节点的第三属性的值表示非所有子域名均符合过滤条件。例如,步骤S501中所述过滤名单中唯一的规则域名“AB. com”所生成名单树对应的目标字符串为“moc. ba”。在一个实施例中,本步骤S502中用到的名单树可以是上述域名过滤名单存储方法实施例二中所生成的名单树。接续,以步骤S501中所述的4个对象字符串为例,其中moc. da在本步骤S502中匹配到第5个对象字符“d”时,名单树的第5级子节点为“b”,因此无法匹配成功,从而得出该对象域名匹配失败从而不符合过滤名单过滤条件的结果;而其他3个对象字符串moc.ba. c ;moc. ba ;moc. b都能通过本步骤的匹配。S503、确认当前比较的树节点的anySub属性是否为true ;是则确定匹配成功,否 则继续步骤S504 ;本步骤用于确认对象域名是否属于过滤名单中目标域名的子域名,如果能够得到“是”的确认结果,那么当前比较的对象域名显然应该通过匹配,得到匹配成功的结论,反之则应继续步骤S504的后续匹配过程。接续以上述剩余的3个对象字符串为例,字符串moc. ba. c在比较到第7个字符 ”时,名单树第7级子节点对应的目标字符也为”,因此能顺利通过上述步骤S502的匹
配,并且本步骤S503中能够确认当前比较的树节点”的anySub属性为true,从而表示该对象字符串moc. ba. c所对应的对象域名c. ab. com属于过滤名单中所配置的某条规则域名(即AB. com)的子域名,因此表明该对象域名能够成功通过匹配。从这里,也可以看出前述过滤名单存储方法实施例二的步骤S304中添加标记树节点的用意。S504、将i的值加上1,返回步骤S502继续下一对象字符的匹配,直至对象字符串循环结束;如前述步骤中的实例所述的,经过之前的匹配,开始的4个对象字符串中,moc. da在进行到第5个对象字符的匹配时止步于步骤S502并得到匹配失败的结果;moC. ba. c在进行到第7个对象字符的匹配时,于步骤S503中便能够得到匹配成功的结果,从而无需再进行后续的匹配。而moc. ba和moc. b则一直要进行到对象字符串循环结束。S505、确认当前比较的树节点的IsOver属性值是否为true,是则确定匹配成功,否则确定匹配失败。在对象字符串的各个字符依次经过上述步骤S502 S504的匹配后,经过本步骤S505能够确认对象域名是否能够符合过滤名单中的目标域名规则。具体而言,当对象字符串循环结束,而相应的当前比较的树节点的IsOver属性值为true时,贝U表明对象域名与名单树所对应过滤名单里的目标域名完全一致,因此能够确定匹配成功;反之,如果对象字符串已经结束循环,而当前比较的树节点的IsOver属性值为false,此时表明对象域名与目标域名并不一致,而且已经由步骤S503确认其并非属于子域名,因此能够确定匹配失败。接续以剩余的2个对象域名moc. ba和moc. b为例域名moc. ba直至匹配到第6个字符结束循环时,名单树中当前比较的树节点“a”的IsOver属性值刚好为true,因此确定匹配成功;而域名moc. b直至匹配到第5个字符结束循环时,名单树中当前比较的树节点“b”的IsOver属性值仍为false,因此确定匹配失败。在上述实施例二中,本申请的域名过滤名单匹配方法在对未知URL中包含的域名进行匹配时,之前利用域名倒序构建的目标字符串及其相应的名单树,能够帮助快速、准确地确认对象域名与目标域名是否相符;这是由于其充分利用了域名的构造规则,能够避免消耗对对象域名不相关部分进行匹配的时间。以对象域名为“xxxxxba. com”、目标域名为“A. com”为例,倒序的匹配过程在匹配到字符“b”时便能够得到匹配失败的结果,从而能够省去对对象域名中“xxxxx”这类不相关的字符进行匹配的时间。另一方面,上述实施例的域名倒序匹配方法同时配合之前构建名单树时所添加的标记树节点”,能够帮助更加快速、准确的确认对象域名是否为目标域名的子域名,这样在发生例如从URL中截取的对象域名字符串过长等类似情况时,便能够避免对对象域名的多余部分进行匹配。以截取的对象域名为“XX. XXX. a. com”、目标域名为“A. com”为例,本实施例的匹配过程在匹配到倒序第6个目标字符”时,便能够得到匹配成功的结果,从而避免了对对象域名中“XX. XXX”的多余部分进行匹配的过程。·图6为本申请域名过滤名单存储装置的实施例结构图,如图所示,本实施例的域名过滤名单存储装置包括转换单元61及树生成单元62。其中,转换单元61用于将过滤名单内配置的域名按预定次序转换为字符串;在一个实施例中,转换单元61是按逆序将过滤名单内配置的域名转换为字符串。树生成单元62是用于采用树的方式根据所述字符串生成名单树;在树生成单元62生成的名单树中,是依次将转换单元61所得到字符串中的字符作为各级树节点,且树节点具有第一属性和第二属性,第一属性用于表示指向与当前字符后面一个字符对应的下一级树节点,第二属性用于表示字符串是否结束。在一个实施例中,树生成单元62进一步包括节点设置子单元621及节点补充子单元622。其中,节点设置子单元621用于采用树的方式根据转换单元61所得到字符串中的字符依次生成各级树节点;节点补充子单元622用于在根据字符串生成的最低一级树节点之后添加一个与字符”对应的标记树节点,从而得到最终的名单树。其中,最终名单树中的树节点还具有第三属性,其用于表示是否所有子域名均符合过滤条件;且标记树节点的第三属性的值表示所有子域名均符合过滤条件(例如,可以赋值为“true”),而名单树中其他树节点的第三属性的值则均表示非所有子域名均符合过滤条件(例如,可以赋值为“false”)。在一个实施例中,上述节点设置子单元621根据转换单元61所得到字符串生成的最低一级树节点的第二属性的值表示字符串已经结束(例如,可以赋值为“true”),而名单树中其他树节点的第二属性的值则均表示字符串没有结束(例如,可以赋值为“false”)。图7为本申请域名过滤名单匹配装置的实施例结构图,本实施例的域名过滤名单匹配装置与上述域名过滤名单存储装置实施例相对应。在一个实施例中,本实施例的域名过滤名单匹配装置直接与上述实施例中的域名过滤名单存储装置相连接。如图7所示,本实施例的域名匹配装置包括对象字符转换单元71、字符比较单元72及属性值确认单元73。其中,对象字符转换单元71用于将待匹配的域名按逆序转换为对象字符串。接续,字符比较单元72用于依次将对象字符串中的对象字符与名单树的各级树节点所对应的目标字符进行比较,确认当前的对象字符与目标字符是否相符,如果不相符则确定匹配失败;如果相符则由属性值确认单元73确认字符比较单元72当前比较的树节点的第三属性的值是否表示所有子域名均符合过滤条件(例如确认其值是否为“true”),如果是则确定匹配成功,否则由字符比较单元72继续匹配下一对象字符,直至对象字符串中的最后一个对象字符时由属性值确认单元73确认字符比较单元72当前比较的树节点的第二属性的值是否表示字符串结束(例如确认其值是否为“true”),如果是则确定匹配成功,否则确定匹配失败。由上述实施例可知,一方面,本申请的域名过滤名单存储装置及域名匹配装置各单元执行的功能完全对应于本申请的域名过滤名单存储方法及域名匹配方法各步骤对应的内容;另一方面,本申请域名过滤名单存储方法及域名匹配方法也可以用计算机等硬件执行计算机可执行程序来实现。虽然已参照几个典型实施例描述了本申请,但应当理解,所用的术语是说明和示例性、而非限制性的术语。由于本申请能够以多种形式具体实施而不脱离其精神或实质,所以应当理解,上述实施例不限于任何前述的细节,而应在随附权利要求所限定的精神和范围内广泛地解释,因此落入权利要求或其等效范围内的全部变化和改型都应为随附权利要 求所涵盖。
权利要求
1.一种由计算机实现的域名过滤名单存储方法,包括以下步骤 511.将过滤名单内配置的域名按预定次序转换为字符串; 512.采用树的方式根据所述字符串生成名单树; 在所述名单树中,所述字符串中的字符依次作为各级树节点,且所述树节点具有第一属性和第二属性,所述第一属性用于表示指向与当前字符后面一个字符对应的下一级树节点,所述第二属性用于表示所述字符串是否结束。
2.如权利要求I所述的域名过滤名单存储方法,其中,所述步骤Sll包括将所述过滤名单内配置的域名按逆序转换为字符串。
3.如权利要求I或2所述的域名过滤名单存储方法,其中,所述步骤Sll包括将所述过滤名单内配置的域名转换为全部小写的字符串。
4.如权利要求I或2所述的域名过滤名单存储方法,其中,所述步骤S12包括 5121.采用树的方式根据所述字符串中的字符依次生成各级树节点; 5122.在根据所述字符串生成的最低一级树节点之后添加一个与字符”对应的标记树节点,得到所述名单树; 其中,所述名单树中的树节点还具有第三属性,所述第三属性用于表示是否所有子域名均符合过滤条件;且所述标记树节点的第三属性的值表示所有子域名均符合过滤条件,所述名单树中其他树节点的第三属性的值表示非所有子域名均符合过滤条件。
5.如权利要求4所述的域名过滤名单存储方法,其中,所述步骤S121中根据所述字符串生成的最低一级树节点的第二属性的值表示字符串结束,所述名单树中其他树节点的第二属性的值表示字符串未结束。
6.如权利要求4所述的域名过滤名单存储方法,其中,所述步骤S12中使用空白节点作为所述名单树的根节点,且所述空白节点的第一属性的值表示指向所述字符串的第一个字符。
7.如权利要求I所述的域名过滤名单存储方法,其中, 所述步骤Sll之前还包括创建包括所有能够用作域名的可用字符的数组,并对所述数组中的可用字符依次赋予数字标识; 所述步骤S12生成的名单树中,所述树节点的第一属性用于表示指向所述当前字符后面一个字符在所述数组中对应的数字标识。
8.一种由计算机实现的域名过滤名单匹配方法,包括以下步骤 581.将待匹配的域名按预定次序转换为对象字符串; 582.依次将所述对象字符串中的对象字符与名单树的各级树节点所对应的目标字符进行比较,确认当前的对象字符与目标字符是否相符,如果不相符则确定匹配失败; 如果相符则继续所述步骤S82比较下一对象字符,直至确认所述对象字符串中最后一个对象字符与对应的目标字符相符则确定匹配成功; 其中,所述名单树具有由所述目标字符构成的所述各级树节点,且所述树节点具有第一属性和第二属性,所述第一属性用于表示指向与当前字符后面一个字符对应的下一级树节点,所述第二属性用于表示所述字符串是否结束;所述目标字符包括将过滤名单内配置的域名按所述预定次序转换而成的字符串中的各个字符。
9.一种由计算机实现的域名过滤名单匹配方法,包括以下步骤·591.将待匹配的域名按逆序转换为对象字符串; ·592.依次将所述对象字符串中的对象字符与名单树的各级树节点所对应的目标字符进行比较,确认当前的对象字符与目标字符是否相符,如果不相符则确定匹配失败;如果相符则继续步骤S93 ; ·593.确认当前比较的树节点的第三属性的值是否表示所有子域名均符合过滤条件,如果是则确定匹配成功,否则返回所述步骤S92匹配下一对象字符,直至所述对象字符串中的最后一个对象字符时继续步骤S94 ; ·594.确认当前比较的树节点的第二属性的值是否表示字符串结束,如果是则确定匹配成功,否则确定匹配失败; 其中,所述名单树具有由所述目标字符构成的所述各级树节点,且所述树节点具有第一属性、第二属性和第三属性,所述第一属性用于表示指向与当前字符后面一个字符对应的下一级树节点,所述第二属性用于表示所述字符串是否结束,所述第三属性用于表示是否所有子域名均符合过滤条件;所述目标字符包括将过滤名单内配置的域名按逆序转换而成的字符串中的各个字符以及与作为标记树节点的最低一级树节点对应的字符”;且所述标记树节点的第三属性的值表示所有子域名均符合过滤条件,所述名单树中其他树节点的第三属性的值表示非所有子域名均符合过滤条件。
10.一种域名过滤名单存储装置,包括 转换单元,用于将过滤名单内配置的域名按预定次序转换为字符串; 树生成单元,用于采用树的方式根据所述字符串生成名单树; 在所述名单树中,所述字符串中的字符依次作为各级树节点,且所述树节点具有第一属性和第二属性,所述第一属性用于表示指向与当前字符后面一个字符对应的下一级树节点,所述第二属性用于表示所述字符串是否结束。
11.如权利要求10所述的域名过滤名单存储装置,其中,所述转换单元是将所述过滤名单内配置的域名按逆序转换为字符串。
12.如权利要求10或11所述的域名过滤名单存储装置,其中,所述树生成单元包括 节点设置子单元,用于采用树的方式根据所述字符串中的字符依次生成各级树节点; 节点补充子单元,用于在根据所述字符串生成的最低一级树节点之后添加一个与字符 ”对应的标记树节点,得到所述名单树; 其中,所述名单树中的树节点还具有第三属性,所述第三属性用于表示是否所有子域名均符合过滤条件;且所述标记树节点的第三属性的值表示所有子域名均符合过滤条件,所述名单树中其他树节点的第三属性的值表示非所有子域名均符合过滤条件。
13.如权利要求12所述的域名过滤名单存储装置,其中,所述节点设置子单元根据所述字符串生成的最低一级树节点的第二属性的值表示字符串结束,所述名单树中其他树节点的第二属性的值表示字符串未结束。
14.一种域名过滤名单匹配装置,包括 对象字符转换单元,用于将待匹配的域名按预定次序转换为对象字符串; 字符比较单元,用于依次将所述对象字符串中的对象字符与名单树的各级树节点所对应的目标字符进行比较,确认当前的对象字符与目标字符是否相符,如果不相符则确定匹配失败;如果相符则继续比较下一对象字符,直至确认所述对象字符串中最后一个对象字符与对应的目标字符相符则确定匹配成功; 其中,所述名单树具有由所述目标字符构成的所述各级树节点,且所述树节点具有第一属性和第二属性,所述第一属性用于表示指向与当前字符后面一个字符对应的下一级树节点,所述第二属性用于表示所述字符串是否结束;所述目标字符包括将过滤名单内配置的域名按所述预定次序转换而成的字符串中的各个字符。
15.一种域名过滤名单匹配装置,包括对象字符转换单元、字符比较单元、属性值确认单元; 所述对象字符转换单元用于将待匹配的域名按逆序转换为对象字符串; 所述字符比较单元用于依次将所述对象字符串中的对象字符与名单树的各级树节点所对应的目标字符进行比较,确认当前的对象字符与目标字符是否相符,如果不相符则确定匹配失败; 如果相符则由所述属性值确认单元确认所述字符比较单元当前比较的树节点的第三属性的值是否表示所有子域名均符合过滤条件,如果是则确定匹配成功,否则由所述字符比较单元继续匹配下一对象字符,直至所述对象字符串中的最后一个对象字符时,由所述属性值确认单元确认所述字符比较单元当前比较的树节点的第二属性的值是否表示字符串结束,如果是则确定匹配成功,否则确定匹配失败; 其中,所述名单树具有由所述目标字符构成的所述各级树节点,且所述树节点具有第一属性、第二属性和第三属性,所述第一属性用于表示指向与当前字符后面一个字符对应的下一级树节点,所述第二属性用于表示所述字符串是否结束,所述第三属性用于表示是否所有子域名均符合过滤条件;所述目标字符包括将过滤名单内配置的域名按逆序转换而成的字符串中的各个字符以及与作为标记树节点的最低一级树节点对应的字符”;且所述标记树节点的第三属性的值表示所有子域名均符合过滤条件,所述名单树中其他树节点的第三属性的值表示非所有子域名均符合过滤条件。
全文摘要
本申请公开了一种域名过滤名单存储方法,包括以下步骤将过滤名单内配置的域名按预定次序转换为字符串;采用树的方式根据所述字符串生成名单树;在所述名单树中,所述字符串中的字符依次作为各级树节点,且所述树节点具有第一属性和第二属性,所述第一属性用于表示指向与当前字符后面一个字符对应的下一级树节点,所述第二属性用于表示所述字符串是否结束。本申请相应还公开一种域名过滤名单匹配方法、一种域名过滤名单存储装置及域名过滤名单匹配装置。本申请的实施例采用树结构对域名的过滤名单进行存储,有效地缩短了域名匹配所需的时间,从而能够提升服务器的性能;并且树结构的域名过滤名单机制可以适用于任何平台,保证了准确性和良好的可调试性。
文档编号H04L29/12GK102882987SQ20111019378
公开日2013年1月16日 申请日期2011年7月12日 优先权日2011年7月12日
发明者邓旻辉, 罗坤莉 申请人:阿里巴巴集团控股有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1