防劫持防篡改
时间:2020-12-07一. 功能简介
随着互联网网络环境的复杂化,劫持和篡改已经成为CP(Content Provider)头痛的问题之一。劫持可能导致用户请求到错误的或未更新的文件,甚至访问到部分字节被篡改的文件。访问到过期文件会影响用户体验,而篡改亦会严重影响客户业务:对于视频业务而言,会造成视频跳帧、花屏、画面内容不匹配甚至无法打开的情况;对于下载业务而言,会造成用户下载完成后无法安装的情况。针对这种问题,网宿推出了防劫持防篡改功能,有效避免劫持和篡改的发生,保证请求文件的正确性。注:DNS劫持主要由HTTPDNS来解决,本文主要针对HTTP劫持。
二. 功能说明
1.基本原理防劫持防篡改功能分为两种,轻量级特征值校验与文件hash特征值校验。
轻量级特征值校验是服务器端在响应文件时,在响应头中携带特征值数据,客户端通过判断响应头中特征值数据是否符合约定规则来判断该文件响应是否来源于正确的节点,若校验不通过,则客户端可根据配置好的逻辑发起https请求或者使用网宿私有协议再次请求。
文件hash特征值校验是会针对文件内容进行hash特征值计算,通过匹配源站给的文件hash值和cdn计算的hash值进行比对,来确保请求文件的准确性。若校验不通过,可使用https协议进行重试。
2.业务流程
特征值校验的业务流程大致如下:
其中, 文件hash特征值校验主要流程如下(需源站提供hash值):
(1)服务器端(源站或CDN)在响应文件时,对响应的文件内容进行hash特征值计算,然后将特征值放置于响应头中发送给客户端(CDN或是终端用户,下同)。
(2)客户端在缓存完文件后,按照约定的算法再次进行hash特征值计算,并与服务器端响应头中的特征值进行匹配,若一致则证明文件内容没有被篡改,若不一致则证明文件内容有误。
(3)若匹配不通过,客户端删除缓存,并可以通过https再次发起请求。
三. 应用场景
该功能适用于需要保障数据传输安全、防劫持、防篡改,同时又未使用全链路https方案的应用场景。轻量级特征值校验适用于对劫持比较敏感,但对防篡改要求不是十分苛刻的客户,主要用于解决302或DNS劫持。
文件hash特征值校验适用于对文件数据安全性要求高的客户,可以防止出现头部未篡改,但文件实体内容与正确内容不一致的情况。
四. 注意事项
对于第一公里和最后一公里的特征值校验,需要客户源站或客户端进行配合。若客户源站无法做相应配合,可考虑使用网宿云存储服务。本页目录