技术领域
本发明属于通信技术领域,更进一步地涉及网络通信技术领域中的一种基于内容流行度的内容分发网络缓存污染防御方法。本发明可用于对内容分发网络中被污染攻击的缓存进行检测并清除已缓存的恶性资源。
背景技术
为了适应现代互联网快速通信的要求,内容分发网络(Content DeliveryNetwork,CDN)将网站内容缓存在最接近用户的网络“边缘”即缓存服务器上,使用户可以就近取得所需的内容,从技术上解决网络带宽小、用户访问量大、网点分布不均的问题,大大提高用户访问网站的响应速度。因此,缓存在内容分发网络上的网络资源成为攻击者破坏网络安全的目标。常见的缓存污染攻击,如缓存投毒,通过替换的内容分发网络上缓存服务器的缓存资源,致使缓存服务器返回用户有害文件或拒绝服务。现有的防御缓存污染攻击方式仅针对某种攻击进行防御设计,这种方式局限于特定的攻击方式,无法应对变种的缓存污染攻击。
杭州又拍云科技有限公司在其申请的专利文献“一种基于内容分发网络的攻击防御方法”(申请号:202110178012.3申请公布号:CN 113037716 A)中公开了一种基于内容分发网络的攻击防御方法。该方法实现的步骤为:(1)在内容分发网络设置边缘节点;(2)根据链路的个数确定高防组数,建立高防集群组;(3)域名解析到内容分发网络后,在内容分发网络的每个边缘节点和链路设置请求数和带宽的阈值,当某个边缘节点的请求数、流量至少一个超过阈值,则进行的异常处理;(4)切入高防集群后分别对高防集群的每个高防IP进行请求数、流量监测,同时对内容分发网络中受到影响的边缘节点、链路、IP进行请求数、流量监测。该方法存在的不足之处在于,对超过内容分发网络边缘节点设置阈值后的请求数或流量进行处理,低于所设置阈值的请求和流量没有分析和检测。
中兴通讯股份有限公司在其申请的专利文献“内容分发网络安全检测方法及系统”(申请号:201710882559.5申请公布号:CN 109561051 A)中公开了一种内容分发网络安全检测方法。该方法实现的步骤为:(1)获取内容分发网络节点复制的网络流量数据得到全网络流量数据;(2)对获取的全量网络流量数据按预设入侵检测规则进行安全分析,判断是否恶意资源;(3)根据分析结果确定是否存在安全告警。该方法存在的不足之处是,只对恶意资源做出判断和预警,并未对恶意资源进行任何的处理,可能导致用户误访问到该恶意资源时,无法获取所需的网页资源。
发明内容
本发明的目的在于针对上述现有技术的不足,提出一种基于内容流行度的内容分发网络缓存污染防御方法,用于解决现有技术仅依靠设置阈值检测部分恶意资源,而导致漏检的风险,以及未处理恶性资源,用户误访问到该恶意资源时,无法获取所需的网页资源,导致无法正确响应用户请求的问题。
本发明实现上述目的的思路是:本发明的缓存服务器通过计算用户请求命中缓存的所有资源的内容流行度,根据内容流行度的排序存储所有资源的源站哈希值,通过响应用户资源头信息值判断命中缓存资源,再将命中缓存资源的哈希值与存储的源站哈希值对比,获得所有被污染的资源,相较于现有技术实现对缓存服务器上所有恶意资源的检测,解决了现有技术存在漏检风险的问题。本发明根据命中缓存资源的属性,将原缓存的良性资源返回给用户或用源服务器的最新资源更新恶性资源后返回给用户,相较于现有技术使用源服务器的最新资源更新恶意资源后返回给用户,解决了现有技术无法正确响应用户请求的问题。
本发明的技术方案包括如下步骤:
步骤1,计算所有缓存资源内容流行度:
按照下式,计算每个时间段内缓存服务器中每个资源及所属的网站的内容流行度:
其中,P(i,j)表示缓存服务器中第i个资源及所属第j个网站的内容流行度,ω表示设置的内容流行度P(i,j)的系数,其值是计算内容流行度时,
步骤2,计算所有缓存资源的源站哈希值:
将所有的内容流行度按照从大到小排序,依次计算每个内容流行度对应的缓存资源的源站哈希值,将每个源站哈希值以键值对集合的形式存储于缓存服务器中;
步骤3,确定命中缓存资源:
将响应用户的资源头信息中“X-Cache”字段值为“HIT”的响应资源,确定为命中缓存服务器的缓存资源;
步骤4,计算命中缓存资源的哈希值;
步骤5,判断命中缓存资源哈希值与缓存服务器存储的源站哈希值是否相等,若是,则执行步骤6,否则,执行步骤7;
步骤6,将缓存资源确定为良性资源后返回给用户;
步骤7,更新恶性资源:
将缓存资源确定为恶性资源,缓存服务器用源服务器的最新资源更新恶性资源后返回给用户。
本发明与现有技术相比具有如下优点:
第一,本发明通过计算所有缓存资源内容流行度,按其排序计算并存储所有资源的源站哈希值,根据响应用户资源头信息值判断命中缓存资源,再将命中缓存资源的哈希值与存储的源站哈希值对比,检测所有被污染的资源,克服了现有技术存在漏检风险的问题,使得本发明具有检测缓存服务器所有恶意资源的优点。
第二,本发明通过判断命中缓存资源的属性,将原缓存的良性资源返回给用户或用源服务器的最新资源更新恶性资源后返回给用户,克服了现有技术对恶意资源仅做出判断和预警,未处理恶性资源,无法正确响应用户请求问题,使得本发明具有保障用户访问资源的正确性的优点。
附图说明
图1是本发明的流程图;
图2是本发明实施例的流程图。
具体实施方式
下面结合附图和实施例对本发明做进一步的描述。
参照图1,对本发明实现的具体步骤做进一步的描述。
步骤1.计算所有缓存资源内容流行度。
按照下式,计算每个时间段内缓存服务器中每个资源及所属的网站的内容流行度:
其中,P(i,j)表示缓存服务器中第i个资源及所属第j个网站的内容流行度,ω表示设置的内容流行度P(i,j)的系数,其值是计算内容流行度时,
所述的资源所属网站的序号是指,按照Alexa网站流量全球综合排名先后顺序,采集数据[x
步骤2.计算所有缓存资源的源站哈希值。
将所有的内容流行度按照从大到小排序,依次计算每个内容流行度对应的缓存资源的源站哈希值,将每个源站哈希值以键值对集合的形式存储于缓存服务器中。
所述的键值对集合的形式为[N
步骤3.确定命中缓存资源。
将响应用户的资源头信息中“X-Cache”字段值为“HIT”的响应资源,确定为命中缓存服务器的缓存资源。
步骤4.计算命中缓存资源的哈希值。
步骤5.判断命中缓存资源哈希值与缓存服务器存储的源站哈希值是否相等,若是,则执行步骤6,否则,执行步骤7。
步骤6.将缓存资源确定为良性资源后返回给用户。
步骤7.更新恶性资源。
将缓存资源确定为恶性资源,缓存服务器用源服务器的最新资源更新恶性资源后返回给用户。
参照图2,对本发明实施例的具体步骤做进一步的描述。
第一步,计算分布在用户边缘缓存服务器中存储的用户需要的每个缓存资源的内容流行度;
第二步,计算分布在用户边缘缓存服务器中存储的用户需要的每个缓存资源的源站哈希值,按所有的内容流行度从大到小的顺序,存储计算后的缓存资源的源站哈希值;
第三步,用户向缓存服务器发送URL(Uniform Resource Locato)请求;
第四步,缓存服务器判断用户URL请求是否命中缓存资源,若用户请求URL后含有随机数,本发明实施例中用户请求URL(url=test.jsp?number=Math.random()),表示该资源是直接向服务器请求最新资源,不存在被污染的可能性,无需进行后续的处理。否则,缓存服务器根据返回给用户的响应资源,查询响应头信息中的“X-Cache”字段值,字段值为“MISS”,表示响应资源没有命中缓存服务器的缓存资源,响应资源是从源服务器返回的,无需进行后续的处理;若字段值为“HIT”时,判断为响应资源命中缓存资源;
第五步,计算命中缓存资源的哈希值,本发明实施例中计算命中资源(test.jsp)哈希值为(MD5:99B05058C3848023AD83760A61DB9FF25);
第六步,将命中缓存资源的哈希值并与存储的源站哈希值作对比,若两值相等,执行第七步,否则执行第八步;
第七步,将良性资源直接返回给用户;
第八步,更新恶性资源,缓存服务器转发用户请求向源服务器获得最新资源,用最新资源更新恶性资源后返回给用户。
机译: 内容分发网络支持基于流行度的缓存
机译: 基于流行度预测的内容分发网络中的高效缓存
机译: 内容分发网络支持基于流行度的缓存