发明内容
有鉴于此,本发明实施例提供一种访问控制的方法和装置,至少能够解决现有技术中URL分类查询效率较低、本地更新不便导致查询结果不准确的现象。
为实现上述目的,根据本发明实施例的一个方面,提供了一种访问控制的方法,包括:获取访问请求中的资源定位地址URL,在本地缓存中查询是否存在与所述URL对应的类别;若查询结果为存在,则基于与所得类别对应的操作权限,执行允许或拒绝访问请求的操作;
若查询结果为不存在,则传输所述URL至云端进行类别查询,并基于与云端返回的类别对应的操作权限,执行允许或拒绝访问请求的操作。
可选的,所述若查询结果为不存在,则传输所述URL至云端进行类别查询,还包括:去除所述URL中的路径字段,得到第一URL;在本地缓存中查询是否存在与所述第一URL对应的类别,若查询结果为存在,则基于与所得类别对应的操作权限,执行允许或拒绝访问请求的操作;若查询结果为不存在,则传输所述URL至云端进行类别查询。
可选的,所述若查询结果为不存在,则传输所述URL至云端进行类别查询,还包括:若所述URL中的主机名为域名格式,则获取与所述主机名对应的IP地址,以将所述URL中的主机名更换为所述IP地址,得到第二URL;在本地缓存中查询是否存在与所述第二URL对应的类别,若查询结果为存在,则基于与所得类别对应的操作权限,执行允许或拒绝访问请求的操作;若查询结果为不存在,则去除所述第二URL中的路径字段,得到第三URL,并在本地缓存中查询是否存在与所述第三URL对应的类别;若查询结果为存在,则基于与所得类别对应的操作权限,执行允许或拒绝访问请求的操作;否则,传输所述URL和/或所述IP地址至云端进行类别查询。
可选的,类别分为站点类别和路径类别,所述站点类别与主机名和IP地址中的一种以及访问协议对应,所述路径类别归属于一站点类别;在本地缓存中查询是否存在与所述URL对应的类别之前,还包括:云端拉取站点数据,基于访问协议、站点类别、路径类别和路径字段,将所述站点数据拆分为多个URL;其中,站点指一个可访问的域名或IP地址;将单个URL作为键名、所述单个URL的类别作为键值,存储至本地缓存。
可选的,所述在本地缓存中查询是否存在与所述URL对应的类别,包括:基于所述URL中的主机名和IP地址中的一种、访问协议和路径字段,判断在本地缓存是否查询到路径类别;若查询结果为不存在,则基于所述URL中的主机名和IP地址中的一种以及访问协议,在本地缓存进行站点类别查询。
可选的,所述站点数据还包括域名和顶级域名;所述在本地缓存中查询是否存在与所述URL对应的类别,还包括:若查询站点类别结果为不存在,则根据所述URL中的域名和/或顶级域名,在本地缓存进行站点类别或路径类别查询。
可选的,还包括:将本地缓存中与所述URL对应的站点数据的访问量累计加1;其中,当查询结果为不存在时,站点数据和类别由云端一并返回;统计预定时间段内各站点数据的访问量,以删除排序低于预定排序值的站点数据。
可选的,还包括:获取云端的URL更新列表;其中,所述URL更新列表包括URL和更新时间;确定与单个URL中域名或IP地址对应的站点,若在本地缓存中查询存在所述站点,则从云端拉取与所述站点对应的站点数据并存储。
为实现上述目的,根据本发明实施例的一个方面,提供了另一种访问控制的方法,包括:接收网关设备上传的URL类别查询请求,获取请求中的URL,确定与所述URL中主机名对应的站点数据;其中,站点指一个可访问的域名或IP地址;在所述站点数据中查询与所述URL中协议对应的站点类别,判断所述站点类别是否包含路径类别,若不包含则返回所述站点类别;若包含,则判断所述URL的路径字段是否与所述路径类别对应的路径字段一致,若一致,则返回所述路径类别,否则返回所述站点类别。
可选的,所述确定与所述URL中主机名对应的站点数据,还包括:若不存在与所述主机名对应的站点数据,则从所述主机名中获取上一级逻辑字段,并确定与所述逻辑字段对应的站点数据。
可选的,还包括:若不存在与所述逻辑字段对应的站点数据,则判断所述逻辑字段中的域名是否为顶级域名;若不是,则获取所述主机名中所述逻辑字段的再上一级逻辑字段,并重复执行上述站点数据查询以及域名判断操作,直至顶级逻辑字段为顶级域名为止;若是,则根据与所述主机号对应的IP地址,进行相应站点数据查询。
可选的,所述根据与所述主机号对应的IP地址,进行相应站点数据查询,还包括:若不存在与所述IP地址对应的站点数据,则根据所述主机名中的顶级域名进行相应站点数据查询。
可选的,还包括:在返回站点类别或路径类别时,将所查询到的站点数据一并返回至所述网关设备进行缓存。
可选的,还包括:对于与单个站点数据对应的URL,判断单个URL包含路径字段时的类别是否与所述单个站点数据的站点类别相同,若相同,则去除所述单个URL的路径字段,否则保留。
可选的,还包括:接收所述网关设备传输的单个站点数据的版本号,判断所述版本号是否小于云端中所述单个站点数据的版本号;若小于,则确定云端中所述单个站点数据发生更改,并传输所述单个站点数据至所述网关设备。
为实现上述目的,根据本发明实施例的另一方面,提供了一种访问控制的装置,包括:本地查询模块,用于获取访问请求中的资源定位地址URL,在本地缓存中查询是否存在与所述URL对应的类别;操作执行模块,用于若查询结果为存在,则基于与所得类别对应的操作权限,执行允许或拒绝访问请求的操作;URL传输模块,用于若查询结果为不存在,则传输所述URL至云端进行类别查询,并基于与云端返回的类别对应的操作权限,执行允许或拒绝访问请求的操作。
可选的,所述URL传输模块,还用于:去除所述URL中的路径字段,得到第一URL;在本地缓存中查询是否存在与所述第一URL对应的类别,若查询结果为存在,则基于与所得类别对应的操作权限,执行允许或拒绝访问请求的操作;若查询结果为不存在,则传输所述URL至云端进行类别查询。
可选的,所述URL传输模块,还用于:若所述URL中的主机名为域名格式,则获取与所述主机名对应的IP地址,以将所述URL中的主机名更换为所述IP地址,得到第二URL;在本地缓存中查询是否存在与所述第二URL对应的类别,若查询结果为存在,则基于与所得类别对应的操作权限,执行允许或拒绝访问请求的操作;若查询结果为不存在,则去除所述第二URL中的路径字段,得到第三URL,并在本地缓存中查询是否存在与所述第三URL对应的类别;若查询结果为存在,则基于与所得类别对应的操作权限,执行允许或拒绝访问请求的操作;否则,传输所述URL和/或所述IP地址至云端进行类别查询。
可选的,类别分为站点类别和路径类别,所述站点类别与主机名和IP地址中的一种以及访问协议对应,所述路径类别归属于一站点类别;还包括拆分模块,用于:从云端拉取站点数据,基于访问协议、站点类别、路径类别和路径字段,将所述站点数据拆分为多个URL;其中,站点指一个可访问的域名或IP地址;将单个URL作为键名、所述单个URL的类别作为键值,存储至本地缓存。
可选的,所述本地查询模块,用于:基于所述URL中的主机名和IP地址中的一种、访问协议和路径字段,判断在本地缓存是否查询到路径类别;若查询结果为不存在,则基于所述URL中的主机名和IP地址中的一种以及访问协议,在本地缓存进行站点类别查询。
可选的,所述站点数据还包括域名和顶级域名;所述本地查询模块,用于:若查询站点类别结果为不存在,则根据所述URL中的域名和/或顶级域名,在本地缓存进行站点类别或路径类别查询。
可选的,还包括本地统计模块,用于:将本地缓存中与所述URL对应的站点数据的访问量累计加1;其中,当查询结果为不存在时,站点数据和类别由云端一并返回;统计预定时间段内各站点数据的访问量,以删除排序低于预定排序值的站点数据。
可选的,还包括站点查询模块,用于:获取云端的URL更新列表;其中,所述URL更新列表包括URL和更新时间;确定与单个URL中域名或IP地址对应的站点,若在本地缓存中查询存在所述站点,则从云端拉取与所述站点对应的站点数据并存储。
为实现上述目的,根据本发明实施例的另一方面,提供了另一种访问控制的装置,包括:站点确定模块,用于接收网关设备上传的URL类别查询请求,获取请求中的URL,确定与所述URL中主机名对应的站点数据;其中,站点指一个可访问的域名或IP地址;第一查询模块,用于在所述站点数据中查询与所述URL中协议对应的站点类别,判断所述站点类别是否包含路径类别,若不包含则返回所述站点类别;第二查询模块,用于若包含,则判断所述URL的路径字段是否与所述路径类别对应的路径字段一致,若一致,则返回所述路径类别,否则返回所述站点类别。
可选的,所述站点确定模块,还用于:若不存在与所述主机名对应的站点数据,则从所述主机名中获取上一级逻辑字段,并确定与所述逻辑字段对应的站点数据。
可选的,所述站点确定模块,还用于:若不存在与所述逻辑字段对应的站点数据,则判断所述逻辑字段中的域名是否为顶级域名;若不是,则获取所述主机名中所述逻辑字段的再上一级逻辑字段,并重复执行上述站点数据查询以及域名判断操作,直至顶级逻辑字段为顶级域名为止;若是,则根据与所述主机号对应的IP地址,进行相应站点数据查询。
可选的,所述站点确定模块,还用于:若不存在与所述IP地址对应的站点数据,则根据所述主机名中的顶级域名进行相应站点数据查询。
可选的,还包括数据返回模块,用于:在返回站点类别或路径类别时,将所查询到的站点数据一并返回至所述网关设备进行缓存。
可选的,还包括路径处理模块,用于:对于与单个站点数据对应的URL,判断单个URL包含路径字段时的类别是否与所述单个站点数据的站点类别相同,若相同,则去除所述单个URL的路径字段,否则保留。
可选的,还包括版本号对比模块,用于:接收所述网关设备传输的单个站点数据的版本号,判断所述版本号是否小于云端中所述单个站点数据的版本号;若小于,则确定云端中所述单个站点数据发生更改,并传输所述单个站点数据至所述网关设备。
为实现上述目的,根据本发明实施例的再一方面,提供了一种URL分类电子设备。
本发明实施例的电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现上述任一所述的访问控制的方法。
为实现上述目的,根据本发明实施例的再一方面,提供了一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现上述任一所述的访问控制的方法。
根据本发明所述提供的方案,上述发明中的一个实施例具有如下优点或有益效果:改变URL分类模式,以结合本地查询和云端查询方式,减少了与云端的交互次数,提高查询分类效率,且云端返回类别时也会将站点数据一同返回至网关设备进行缓存;以站点形式组织数据,针对同一域名或IP地址进行URL统一管理,对于类别与siteCats相同的URL,去除其path部分,减少了URL对空间的占用量,提高了URL的覆盖范围;网关设备增加访问排行统计功能,用以去除不常访问的站点数据,降低了站点数据对本地存储空间的占用量,提高了本地查询效率。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
本方案中的站点指一个可访问的域名或IP(Internet Protocol,网络之间互连的协议),例如下列三条URL:
https://new.xx.com/omn/TWF20200/TWF2020051206625800.html
https://new.xx.com/zt/template/?id=TWF2019123102663000
http://chuangshi.xx.com/bk/wx/23240412.html
其中前两条属于同一个站点:new.xx.com
第三条属于另一个站点:chuangshi.xx.com
站点只是利用代码实现对URL进行分类的一个组织形式,且每条记录包含主机名、IP、域名(domain)和顶级域名(TLD)中的至少一个。云端站点数据以下列形式组织并存储,格式如下:
第一示例:仅包含主机名(hostname)
第二示例:仅包含IP地址
第三示例:仅包含域名(domain)
第四示例:仅包含顶级域名(TLD)
其中,revision为站点数据的版本号,protocols为网络中的数据交换采用的通信协议,siteCats、fileCats仅表示数据库表中一个字段的字段名。siteCats表示某个站点整体的类别,例如www.xxxxx.com为搜索引擎,而fileCats表示对该站点下某个特定包含path(路径字段)的URL的路径类别。
参见图1,示出的是本发明实施例提供的一种访问控制的方法的主要流程图,包括如下步骤:
S101:获取访问请求中的资源定位地址URL,在本地缓存中查询是否存在与所述URL对应的类别;
S102:若查询结果为存在,则基于与所得类别对应的操作权限,执行允许或拒绝访问请求的操作;
S103:若查询结果为不存在,则传输所述URL至云端进行类别查询,并基于与云端返回的类别对应的操作权限,执行允许或拒绝访问请求的操作。
上述实施方式中,对于步骤S101,以包含主机名的站点数据为例,其可用于判断主机名为www.xxxxx.com的URL的分类。例如将使用HTTPS协议访问站点(www.xxxxx.com)的URL均分类为搜索引擎,但将单独分析使用http协议访问该站点的URL,也即,站点数据指示了使用HTTPS协议的URL更受信任。进一步,假若使用http://www.xxxxx.com/xxx/abc.bat?a=test这个URL将导致获取一个木马文件类别,则相应的站点数据为:
网关设备根据从云端拉取到的站点数据中的协议、siteCats、fileCats和路径字段,将站点数据拆分为一条条以URL为key、类别为value的记录存放在本地key-value数据库中,具有查询简单且速度极快特点。比如上例站点数据拆分成key-value的形式后,记录如下:
http://www.xxxxx.com=>搜索引擎(根据siteCats拆分)
http://www.xxxxx.com/xxx/abc.bat?a=test=>木马程序(根据fileCats拆分);
https://www.xxxxx.com=>搜索引擎(根据siteCats拆分)。
实际操作中的协议类型多样,除了上述HTTP和HTTPS之外,还可以使用SMTP、POP3、IMAP等,例如拆分后的URL格式和相应类别为:
Smtp+xxxxx.com=>正常邮件服务
Smtp+yyyyy.com=>钓鱼邮件
当网关设备收到URL请求时,首先以完整URL为key在本地缓存中查询,以https://www.xxxxx.com和http://www.xxxxx.com/xxx/abc.bat?为例,其包含的FQDN均为www.xxxxx.com,因而可使用上述hostname为www.xxxxx.com的站点数据:
1)对于https://www.xxxxx.com,涉及的协议是HTTPS,则首先判断落入与HTTPS对应的“搜索引擎”分类(“siteCats”:[“搜索引擎”]);
2)对于http://www.xxxxx.com/xxx/abc.bat?,涉及的协议是HTTP,则首先判断落入与HTTP对应的“搜索引擎”分类(“siteCats”:[“搜索引擎”]),但该URL的path部分为“xxx/abc.bat?a=test”,则继续落入标识为“木马程序”分类(“fileCats”:[“木马程序”])。
需要说明的是,本地查询与云端查询方式不同,云端需依据URL中的主机名、IP、逻辑字段、顶级域名等信息进行查询,而本地缓存已将站点数据拆分为多个URL,后续直接以整体URL查询(主要仍通过主机名、协议和路径字段),两者查询方式不同。
但若依据上述协议、主机名等在本地查询不存在时,也可以依据站点数据中的域名和顶级域名进行再次查询。查询过程与云端查询过程类似,具体参见后续图5所示描述。
对于步骤S102,本方案目的在于实现对URL的监管,因此在获取到URL类别后,会依据该与该类别对应的操作权限判断是放行或是拦截。如上述http://www.xxxxx.com/xxx/abc.bat?a=test在本地缓存中查出类别为“木马程序”,该类别对应的操作权限为拒绝加载,则拦截;而https://www.xxxxx.com的类别“搜索引擎”对应的操作权限为允许,则放行。
对于各类别对应的操作权限设置方式主要有两种:
1)在站点数据的各类别后,预先设置相应操作权限,例如:
2)预先设置允许加载的类别表,例如搜索引擎1-允许加载、搜索引擎2-拒绝加载、木马程序-拒绝加载等。本地缓存在获取到类别后,若在该表中查询到该类别,即表示该类别对应的操作权限为允许加载,则放行,否则拦截。
对于步骤S103,当在本地缓存查询结果为不存在时,则表示需依赖于云端进行处理,具体参见后续图4和图5所示描述。
网关设备在获取云端返回的类别结果后,根据与该类别对应的操作权限,访问控制继续访问请求的,并将云端返回的站点数据站点拆分为以URL为key、相应类别为value的记录存储至本地缓存中,以便后续直接在本地查询与该站点对应的URL。
需要说明的是,互联网中的站点是不断增加的,对于本地缓存未查询到的URL,可能云端也会返回未分类的结果至网关设备。由于不确定该类URL是否会对企业网络服务造成影响,需依赖于工作人员进行设定,例如拒绝访问新开发的URL。
但当云端查询结果为无时,会快速基于机器学习与人工分类相结合的方式进行分类处理,然后存入云端库。后续网关设备可以通过云端查询得到新的站点数据,在云端返回站点数据至本地缓存后,可以由本地缓存优先处理URL分类。
在获取到URL的类别后,可以更新本地缓存中各站点数据的访问量。因企业业务的不同导致所访问的网站类型不一,例如IT类常访问技术类网站、财务类访问财务相关网站。在本地缓存查询时增加站点访问量统计功能,网关设备后台进程根据统计排行榜仅保留topN的站点数据,并依赖云端对这些数据进行定期更新,保证了多数查询落在网关设备本身,且缩小了本地数据库的占用量,从而提高网关设备的查询效率、存储效率以及数据更新效率。
对于网关设备依赖云端对topN的站点数据进行定期更新:
站点设有revision字段表示其版本号,网关设备将本地站点的revision值传输至云端,云端将其与云端库中revision进行比对,以判断站点的revision是否发生变化,若无改变即表示云端站点未更新;否则已更新(即云端中的revision较大),需返回新revision的站点数据至网关设备,之后网关设备将更新后的站点数据存储至本地缓存中。
站点更新的场景包括,企业的业务发生变更,导致网站分类随之改变,或者网站不存在,如上举例www.xxxxx.com被黑客挂载的木马程序被企业发现并删除等情况。实际站点更新的数据量较少,通过比对本地站点和云端站点的revision值,而非整个站点记录,以此提高本地站点数据更新效率。
需要说明的是,网关设备初始化时仅会在本地内置一个通用并常访问的站点数据列表,当企业常访问的站点数据在本地缓存查询不存在时,会从云端拉取并存入本地,或者由云端类别查询后返回给网关设备。由于不同类型企业所常访问站点的不一,需要基于一个统计学习的过程,将清除企业不常访问的站点数据。且随着互联网的不断发展,企业使用的网站以及互联网提供的网站也随之不断变化,因此网关设备会持续学习,即一直存在拉取与清理的过程。
另外,当云端数据更新时,会生成一个URL更新列表,包含URL以及更新时间。网关设备定期扫描云端该列表,根据URL中的主机名或IP地址确定相应站点,若该站点在本地缓存库中,即表示云端中其站点数据发生更改,需从云端拉取完整站点数据并更新到本地缓存中,以此提高网关设备URL分类准确性。
上述实施例所提供的方法,提供本地查询与云端查询相结合的方式来优化查询效率和查询准确率,当企业内部终端访问互联网时,网关设备优先查询本地缓存中的URL类别,若查询到则直接根据所得类别处理,否则需要依赖于云端进行类别查询。
参见图2,示出了根据本发明实施例的一种可选的访问控制的方法流程示意图,包括如下步骤:
S201:获取访问请求中的资源定位地址URL,在本地缓存中查询是否存在与所述URL对应的类别;
S202:若查询结果为存在,则基于与所得类别对应的操作权限,执行允许或拒绝访问请求的操作;
S203:若查询结果为不存在,则去除所述URL中的路径字段,得到第一URL;
S204:在本地缓存中查询是否存在与所述第一URL对应的类别,若查询结果为存在,则基于与所得类别对应的操作权限,执行允许或拒绝访问请求的操作;
S205:若查询结果为不存在,则传输所述URL至云端进行类别查询,并基于与云端返回的类别对应的操作权限,执行允许或拒绝访问请求的操作。
上述实施方式中,对于步骤S201、S202和S205可参见图1所示步骤S101~S103的描述,在此不再赘述。
上述实施方式中,对于步骤S203~S204,对于同一站点的URL数量可能较多,且多数属于同一类别,为减少本地存储量以及提高匹配效率,会对URL进行一定处理。
files字段只存在于hostname与ip类型的站点中,且files中的path字段存储的是URL的path部分。当URL在包含path时的类别与站点的siteCats一致时,会删除URL中的path部分,否则保留。该操作需在云端完成,本地仅获取使用。
因此,站点中的files展开数据以包含带path的URL为key、fileCats为value;不包含files的数据展开为不带path的URL作为key、siteCats作为value。
若以完整URL为key、且在本地缓存中查询结果为不存在时,可以去掉其path部分,以URL剩余部分(即第一URL)在本地缓存中再查询。例如http://www.xxxxx.com/abc/test在本地缓存中不能直接查到类别,但去掉path只通过协议与主机名部分查询http://www.xxxxx.com获得类别为“搜索引擎”。
上述实施例所提供的方法,为降低对空间的占用量,对于包含path的URL,若其类别与所属站点的siteCats相同时,可以在云端适应性删除该path,后续本地即需要删除URL的path部分进行匹配。
参见图3,示出了根据本发明实施例的另一种可选的访问控制的方法流程示意图,包括如下步骤:
S301:获取访问请求中的资源定位地址URL,在本地缓存中查询是否存在与所述URL对应的类别;
S302:若查询结果为存在,则基于与所得类别对应的操作权限,执行允许或拒绝访问请求的操作;
S303:若查询结果为不存在,则去除所述URL中的路径字段,得到第一URL;
S304:在本地缓存中查询是否存在与所述第一URL对应的类别,若查询结果为存在,则基于与所得类别对应的操作权限,执行允许或拒绝访问请求的操作;
S305:若查询结果为不存在且所述URL中的主机名为域名格式,则获取与所述主机名对应的IP地址;
S306:将所述URL中的主机名更换为所述IP地址,得到第二URL,在本地缓存中查询是否存在与所述第二URL对应的类别,若查询结果为存在,则基于与所得类别对应的操作权限,执行允许或拒绝访问请求的操作;
S307:若查询结果为不存在,则去除所述第二URL中的路径字段,得到第三URL;
S308:在本地缓存中查询是否存在与所述第三URL对应的类别,若查询结果为存在,则基于与所得类别对应的操作权限,执行允许或拒绝访问请求的操作;
S309:若查询结果为不存在,则传输所述URL和/或所述IP地址至云端进行类别查询,并基于与云端返回的类别对应的操作权限,执行允许或拒绝访问请求的操作。
上述实施方式中,对于步骤S301和S302可参见图1所示步骤S101~S103的描述,步骤S303~S304可参见图2所示步骤S203~S204的描述,在此不再赘述。
上述实施方式中,对于步骤S305~S306,实际操作中URL的形态多样,例如:
http://www.xxxxx.com/abc.html中的host为域名:www.xxxxx.com
http://172.11.2.3/abc.html中的host为ip:172.11.2.3
当host为域名时,比如http://www.xxxxx.com/abc.html,虽在本地缓存中并没有查询到与www.xxxxx.com相关的类别,但可能包含其IP地址的类别。因此,网关设备可以根据DNS(Domain Name System,域名系统)获取到与www.xxxxx.com对应的IP地址,例如172.11.1.2,并更新原URL,得到第二URL-http://172.11.2.3/abc.html,以此基于第二URL确定其类别。
但当host为IP地址时,例如http://172.11.2.3/abc.html,则不会进行DNS查询,只能通过IP地址访问,即只能查询与172.11.2.3IP对应的站点数据。
同一个IP主机上可能部署多个站点,对应于多个host网站,不同网站对应于不同类别,因此,host与IP需独立开:
test.com=>171.1.1.2休闲娱乐类
test.com=>171.1.1.2论坛类
则171.1.1.2这个IP对应于两个类别。
对于步骤S307~S309,若在本地缓存中同样查询不存在与完整第二URL对应的类别,则需同样去除第二URL中的path部分,得到第三URL。然后以第三URL作为key在本地缓存中进行查询,若查询到类别则返回,否则需依赖云端查询。
在依赖云端查询类别时,考虑主机名与IP地址之间的对应关系,可以将URL以及相应IP地址作为参数一同传输至云端进行查询。也可以仅传输URL,由云端自行获取与URL对应的IP地址;还可以仅传输IP地址,由云端反向查询相应URL。
上述实施例所提供的方法,本地缓存可能存储与IP地址对应的类别,因此在基于URL域名在本地缓存中查询不到类别时,可以将域名更换为相应IP地址进行再查询,以此提高本地查询准确率。
参见图4,示出了根据本发明实施例的另一种访问控制的方法流程示意图,包括如下步骤:
S401:接收网关设备上传的URL类别查询请求,获取请求中的URL,确定与所述URL中主机名对应的站点数据;其中,站点指一个可访问的主机名或IP地址;
S402:在所述站点数据中查询与所述URL中协议对应的站点类别,判断所述站点类别是否包含路径类别;
S403:若不包含,则返回所述站点类别;
S404:若包含,则判断所述URL的路径字段是否与所述路径类别对应的路径字段一致,若不一致,则返回所述站点类别;
S405:若一致,则返回所述路径类别。
上述实施方式中,对于步骤S401~S405,当网关设备在本地缓存中未查询到URL类别时,会发起一次云端查询,携带参数包括完整URL(和/或IP地址)。云端收到请求后进行类别查询:
1、由于域名不区分大小写,因此首先统一将URL转换为lowercase小写格式;
2.根据URL中的hostname,查询是否存在相匹配的站点数据;其中,此处的hostname可以为域名或IP地址;
3、若查询结果为存在,则继续查询该站点数据中对应URL协议的siteCats,并判断该siteCats是否包含fileCats;
4、若不包含则返回siteCats,否则需确定与fileCats对应的path部分,判断URL中的path部分是否该path一致;
5、若不一致,则返回siteCats,否则返回fileCats,流程结束。
同样以图1示例站点数据进行说明,假若目前存在三条URL需要查询,三者均通过主机名www.xxxxx.com查询到该站点数据:
https://www.xxxxx.com/abc.html
http://www.xxxxx.com/123.html
http://www.xxxxx.com/xxx/abc.bat?a=test
对于第一条URL,匹配https协议且https协议不包含fileCats,则该URL的类别为siteCats搜索引擎;
对于第二条URL,匹配http协议且http协议包含fileCats,但其path部分123.html与files中的path“xxx/abc.bat?a=test”不一致,则返回siteCats搜索引擎;
第三条URL与第二条URL类似,但其path部分与站点数据http协议fileCats对应的path一致,则该URL的类别为fileCats木马程序。
云端在返回网关设备时不仅会返回对应URL的类别,也会返回对应的站点数据,以便网关设备缓存,并在下次收到同样或相似URL时,可以优先在本地完成查询操作。进一步的,云端中同一站点数据下,当某个URL的类别与站点的siteCats一致时会删除该URL的path部分,否则保留。网关设备仅仅是使用这些站点数据进行URL分类,不具备URL的path部分删除功能。
上述实施例所提供的方法,在本地缓存查询结果不存在时,可以在云端进行类别查询操作,相比本地查询将URL作为一个整体查询的方式,云端分别考虑域名、IP地址、协议和path逐步进行查询匹配,提高查询准确性。
参见图5,示出了根据本发明实施例的一种可选的访问控制的方法流程示意图,包括如下步骤:
S501:接收网关设备上传的URL类别查询请求,获取请求中的URL,确定是否存在与所述URL中主机名对应的站点数据;其中,站点指一个可访问的域名或IP地址;
S502:若不存在与所述主机名对应的站点数据,则从所述主机名中获取上一级逻辑字段,并确定是否存在与所述逻辑字段对应的站点数据;
S503:若不存在与所述逻辑字段对应的站点数据,则判断所述逻辑字段中的域名是否为顶级域名;
S504:若不是,则获取所述主机名中所述逻辑字段的再上一级逻辑字段,并重复执行上述站点数据查询以及域名判断操作,直至顶级逻辑字段为顶级域名为止;
S505:若是,则根据与所述主机号对应的IP地址,进行相应站点数据查询;
S506:若不存在与所述IP地址对应的站点数据,则根据所述主机名中的顶级域名进行相应站点数据查询;
S507:在所得站点数据中查询与所述URL中协议对应的站点类别,判断所述站点类别是否包含路径类别;
S508:若不包含,则返回所述站点类别;
S509:若包含,则判断所述URL的路径字段是否与所述路径类别对应的路径字段一致,若不一致,则返回所述站点类别;
S510:若一致,则返回所述路径类别。
上述实施方式中,对于步骤S501、S507~S510可参见图4所示步骤S401~S405的描述,在此不再赘述。
上述实施方式中,对于步骤S502~S506,若在云端未查询到与URL中hostname对应的站点数据,则根据上一级domain,查询是否存在相应站点数据。以如下hostname为例:v1.open.cloudapis.skyguard.com.cn
则其上一级domain为:open.cloudapis.skyguard.com.cn;
再上一级domain为:cloudapis.skyguard.com.cn;
再上一级domain为:.skyguard.com.cn;
再上一级并非domain,而是tld:com.cn。
1、首先根据上一级domain“open.cloudapis.skyguard.com.cn”进行站点数据匹配查询;
2、若查询结果为存在,则重复执行步骤S507~S510;
3、否则,判断上一级domain“open.cloudapis.skyguard.com.cn”中的域名是否为顶级域名,如上“tld:com.cn”;
4、若不是,则重复执行上述步骤,依次查询cloudapis.skyguard.com.cn和.skyguard.com.cn,直至顶级com.cn为止;
5、若是,则根据与主机名对应的IP地址,查询是否存在相匹配的站点数据,若查询结果为存在,则重复执行步骤S507~S510;
6、否则,根据tld(顶级域名)查询是否存在相匹配的站点数据;
7、若查询结果为不存在,则返回未分类的结果,否则重复执行步骤S507~S510。
上述实施例所提供的方法,云端在基于主机名未查询到站点数据时,可以基于其逻辑字段、IP地址和顶级域名进行查询,以此扩展了站点数据的覆盖范围,提高查询准确度。
本方明实施例所提供的方法,提供本地查询与云端查询相结合的方式来优化查询效率和查询准确率,当企业内部终端访问互联网时,网关设备优先查询本地缓存中的URL类别,若查询到则直接根据所得类别的操作权限进行处理,否则需要依赖于云端进行类别查询。相对于现有方式,还具有其他有益效果:
1、在云端以站点形式组织数据,针对同一域名或IP地址进行URL统一管理,提高了URL的覆盖范围;
2、为减少站点数据的体积大小,对于包含path部分的URL,若其类别与相应协议站点数据的siteCats相同时,可以去除该URL的path;该操作在云端完成;
3、网关设备本地学习的方式(增加访问排行统计功能),用以去除不常访问的站点数据,无需存储全量URL,降低了站点数据对本地存储空间的占用量;
4、只有在本地未查询到URL分类时才会基于云端查询URL类别,减少了与云端的交互次数,且云端返回类别时也会将相应站点数据一同返回至网关设备进行缓存,以便本地在下次接收到相同或相似URL时优先完成本地查询。
参见图6,示出了本发明实施例提供的一种访问控制的装置600的主要模块示意图,包括:
本地查询模块601,用于获取访问请求中的资源定位地址URL,在本地缓存中查询是否存在与所述URL对应的类别;
操作执行模块602,用于若查询结果为存在,则基于与所得类别对应的操作权限,执行允许或拒绝访问请求的操作;
URL传输模块603,用于若查询结果为不存在,则传输所述URL至云端进行类别查询,并基于与云端返回的类别对应的操作权限,执行允许或拒绝访问请求的操作。
本发明实施装置中,所述URL传输模块603,还用于:去除所述URL中的路径字段,得到第一URL;在本地缓存中查询是否存在与所述第一URL对应的类别,若查询结果为存在,则基于与所得类别对应的操作权限,执行允许或拒绝访问请求的操作;若查询结果为不存在,则传输所述URL至云端进行类别查询。
本发明实施装置中,所述URL传输模块603,还用于:若所述URL中的主机名为域名格式,则获取与所述主机名对应的IP地址,以将所述URL中的主机名更换为所述IP地址,得到第二URL;在本地缓存中查询是否存在与所述第二URL对应的类别,若查询结果为存在,则基于与所得类别对应的操作权限,执行允许或拒绝访问请求的操作;若查询结果为不存在,则去除所述第二URL中的路径字段,得到第三URL,并在本地缓存中查询是否存在与所述第三URL对应的类别;若查询结果为存在,则基于与所得类别对应的操作权限,执行允许或拒绝访问请求的操作;否则,传输所述URL和/或所述IP地址至云端进行类别查询。
本发明实施装置中,类别分为站点类别和路径类别,所述站点类别与主机名和IP地址中的一种以及访问协议对应,所述路径类别归属于一站点类别;还包括拆分模块604(图中未标出),用于:从云端拉取站点数据,基于访问协议、站点类别、路径类别和路径字段,将所述站点数据拆分为多个URL;其中,站点指一个可访问的域名或IP地址;将单个URL作为键名、所述单个URL的类别作为键值,存储至本地缓存。
本发明实施装置中,所述本地查询模块601,用于:基于所述URL中的主机名和IP地址中的一种、访问协议和路径字段,判断在本地缓存是否查询到路径类别;若查询结果为不存在,则基于所述URL中的主机名和IP地址中的一种以及访问协议,在本地缓存进行站点类别查询。
本发明实施装置中,所述站点数据还包括域名和顶级域名;所述本地查询模块601,用于:若查询站点类别结果为不存在,则根据所述URL中的域名和/或顶级域名,在本地缓存进行站点类别或路径类别查询。
本发明实施装置还包括本地统计模块605(图中未标出),用于:将本地缓存中与所述URL对应的站点数据的访问量累计加1;其中,当查询结果为不存在时,站点数据和类别由云端一并返回;统计预定时间段内各站点数据的访问量,以删除排序低于预定排序值的站点数据。
本发明实施装置中,还包括站点查询模块606(图中未标出),用于:获取云端的URL更新列表;其中,所述URL更新列表包括URL和更新时间;确定与单个URL中域名或IP地址对应的站点,若在本地缓存中查询存在所述站点,则从云端拉取与所述站点对应的站点数据并存储。
参见图7,示出了本发明实施例提供的另一种访问控制的装置700的主要模块示意图,包括:
站点确定模块701,用于接收网关设备上传的URL类别查询请求,获取请求中的URL,确定与所述URL中主机名对应的站点数据;其中,站点指一个可访问的域名或IP地址;
第一查询模块702,用于在所述站点数据中查询与所述URL中协议对应的站点类别,判断所述站点类别是否包含路径类别,若不包含则返回所述站点类别;
第二查询模块703,用于若包含,则判断所述URL的路径字段是否与所述路径类别对应的路径字段一致,若一致,则返回所述路径类别,否则返回所述站点类别。
本发明实施装置中,所述站点确定模块701,还用于:若不存在与所述主机名对应的站点数据,则从所述主机名中获取上一级逻辑字段,并确定与所述逻辑字段对应的站点数据。
本发明实施装置中,所述站点确定模块701,还用于:若不存在与所述逻辑字段对应的站点数据,则判断所述逻辑字段中的域名是否为顶级域名;若不是,则获取所述主机名中所述逻辑字段的再上一级逻辑字段,并重复执行上述站点数据查询以及域名判断操作,直至顶级逻辑字段为顶级域名为止;若是,则根据与所述主机号对应的IP地址,进行相应站点数据查询。
本发明实施装置中,所述站点确定模块701,还用于:若不存在与所述IP地址对应的站点数据,则根据所述主机名中的顶级域名进行相应站点数据查询。
本发明实施装置还包括数据返回模块704(图中未标出),用于:在返回站点类别或路径类别时,将所查询到的站点数据一并返回至所述网关设备进行缓存。
本发明实施装置还包括路径处理模块705(图中未标出),用于:对于与单个站点数据对应的URL,判断单个URL包含路径字段时的类别是否与所述单个站点数据的站点类别相同,若相同,则去除所述单个URL的路径字段,否则保留。
本发明实施装置还包括版本号对比模块706(图中未标出),用于:接收所述网关设备传输的单个站点数据的版本号,判断所述版本号是否小于云端中所述单个站点数据的版本号;若小于,则确定云端中所述单个站点数据发生更改,并传输所述单个站点数据至所述网关设备。
另外,在本发明实施例中所述装置的具体实施内容,在上面所述方法中已经详细说明了,故在此重复内容不再说明。
图8示出了可以应用本发明实施例的示例性系统架构800。
如图8所示,系统架构800可以包括终端设备801、802、803,网络804和服务器805(仅仅是示例)。网络804用以在终端设备801、802、803和服务器805之间提供通信链路的介质。网络804可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备801、802、803通过网络804与服务器805交互,以接收或发送消息等。终端设备801、802、803上可以安装有各种通讯客户端应用。
终端设备801、802、803可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器805可以是提供各种服务的服务器,例如对用户利用终端设备801、802、803所浏览的购物类网站提供支持的后台管理服务器(仅为示例)。
需要说明的是,本发明实施例所提供的方法一般由服务器805执行,相应地,装置一般设置于服务器805中。
应该理解,图8中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
下面参考图9,其示出了适于用来实现本发明实施例的终端设备的计算机系统900的结构示意图。图9示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图9所示,计算机系统900包括中央处理单元(CPU)901,其可以根据存储在只读存储器(ROM)902中的程序或者从存储部分908加载到随机访问存储器(RAM)903中的程序而执行各种适当的动作和处理。在RAM 903中,还存储有系统900操作所需的各种程序和数据。CPU 901、ROM 902以及RAM 903通过总线904彼此相连。输入/输出(I/O)接口905也连接至总线904。
以下部件连接至I/O接口905:包括键盘、鼠标等的输入部分906;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分907;包括硬盘等的存储部分908;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分909。通信部分909经由诸如因特网的网络执行通信处理。驱动器910也根据需要连接至I/O接口905。可拆卸介质911,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器910上,以便于从其上读出的计算机程序根据需要被安装入存储部分908。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分909从网络上被下载和安装,和/或从可拆卸介质911被安装。在该计算机程序被中央处理单元(CPU)901执行时,执行本发明的系统中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括本地查询模块、操作执行模块、URL传输模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,URL传输模块还可以被描述为“传输URL至云端的模块”。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:
获取访问请求中的资源定位地址URL,在本地缓存中查询是否存在与所述URL对应的类别;
若查询结果为存在,则基于与所得类别对应的操作权限,执行允许或拒绝访问请求的操作;
若查询结果为不存在,则传输所述URL至云端进行类别查询,并基于与云端返回的类别对应的操作权限,执行允许或拒绝访问请求的操作。
根据本发明实施例的技术方案,提供本地查询与云端查询相结合的方式来优化查询效率和查询准确率,当企业内部终端访问互联网时,网关设备优先查询本地缓存中的URL类别,若查询到则直接根据所得类别处理,否则需要依赖于云端进行类别查询。相对于现有方式,还具有其他有益效果:
1、在云端以站点形式组织数据,针对同一域名或IP地址进行URL统一管理,提高了URL的覆盖范围;
2、为减少站点数据的体积大小,对于包含path部分的URL,若其类别与相应协议站点数据的siteCats相同时,可以去除该URL的path;
3、网关设备本地学习的方式(增加访问排行统计功能),用以去除不常访问的站点数据,无需存储全量URL,降低了网关设备对站点数据的存储量以及对本地存储空间的占用量,从而提高本地查询效率;
4、只有在本地未查询到URL分类时才会基于云端查询URL类别,减少了与云端的交互次数,且云端返回类别时也会将相应站点数据一同返回至网关设备进行缓存。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。