今天来跟大家聊一聊下载劫持,劫持主要分类两大类:DNS劫持和HTTP劫持。而HTTP劫持最常见的就是3XX跳转劫持,JS劫持以及HTML劫持。
众所周知,CDN的全称是Content Delivery Network,即内容分发网络,主要是提高网站的速度,可以优化网站的访问速度,提高网站的安全性和稳定性。
什么你只知道CDN能加速?那么CDN本身是一种DNS劫持你知道吗?不过放心,它是良性的,不同于黑客强制DNS把域名解析到自己的钓鱼IP上,CDN是让DNS主动配合,把域名解析到临近的服务器上。
同时服务器开启HTTP代理,让用户感觉不到CDN的存在。而且CDN劫持不像海王那样不挑食,劫持用户所有流量。CDN比较专一只“劫持”用户的静态资源访问,对于之前用户访问过的资源,CDN将直接从本地缓存里反馈给用户,因此速度有了很大的提升。
DNS劫持
正常DNS解析的流程是用户走localdns,通过运营商提供的递归DNS进行域名解析。而DNS劫持一般发生在LDNS(递归dns)这一层。
DNS劫持有这三种情况:
1.错误域名解析到纠错导航页面,导航页面存在广告;
2.错误域名解析到非正常页面 ;
3.直接将特点站点解析到恶意或者广告页面 。
HTTP劫持
HTTP劫持是指在传输过程中,劫持方伪装成目的服务器抢先给出了响应,使得客户端接收了劫持的响应而抛弃了正确的响应,就是先下手为强,后下手遭殃。甚至有时候劫持方会完全拦截用户的请求,目的服务器没有接收到任何请求。
在HTTP劫持中,3XX跳转,JS内容篡改以及html内容篡改都可能会发生。目前看3XX跳转和JS内容篡改比较常见。
劫持方想要达成的目的是默默的赚钱,因此这就决定了劫持方不可能猖獗到劫持整个域名的http请求。一般是通过过滤识别http请求的特征码来判断是否要进行劫持。
那么我们有两种防劫持思路
1.采用https协议加密请求。
2.隐藏http请求的特征,例如使用对称加密算法加密整个url。
https可以说是防止劫持的终极思路,但是https多了ssl握手的过程,会耗费一定的时间和性能,必须要考虑到时间影响和CDN节点的性能影响。另外https一般分为两种,一种是传统https(合用证书),一种是https sni。
目前的主流是https sni,但选用的时候必须确认好具体的业务需求,因为市面上还残留着一些老旧版本的浏览器。
URL加密也是经常用来防止劫持的做法。市面上的各大手机应用商店都采用了这种做法。相较于https,url加密的兼容性更好,并且对CDN节点带来的解密额外负担可以忽略,但是url加密需要CDN节点的密切配合。
通常是选中一种对称加密算法,调用加密后的url。用户向CDN节点发起请求,CDN节点会解密url,获取真实的url并且响应给用户。
由于劫持方一般通过对url进行匹配决定是否进行劫持,因此这种url加密的方式也可以很好地防止劫持。
通俗的来讲,DNS劫持就是你想去存钱运营商却把你拉到了劫匪手中;而HTTP劫持就是你从服务器买了一份饭电信给你放了一坨屎。
过以上的内容,相信机智的网友们已经知道了什么是DNS劫持和HTTP劫持以及应对方法,如果还有什么疑问欢迎来撩~