众所周知,网络劫持共分为两大类:DNS劫持和HTTP劫持。那么它们到底是什么意思,有什么不同之处呢?
DNS劫持
大部分网站都需要用到CDN,使用CDN加速后,源站IP被隐藏,用户通过访问最近节点,浏览网站内容,以达到网站被加速的目的。这个过程其实也可以说是DNS劫持的过程。
与恶意DNS劫持不同的是,CDN服务商的目的是友好的,加速也经过网站管理员同意,我们经常说的DNS劫持,均指恶意的DNS劫持。
一般DNS解析流程是用户走localdns,通过运营商提供的递归DNS解析,通常的DNS劫持就发生在这一层。
当网站发生DNS劫持后,用户输入网址,不再跳转到原来的页面,而是被攻击者指向一个特定的页面。通俗的说,用户输出google.com后,回车打开的,却是百度搜索的页面,这就是DNS劫持的典型案例。
DNS劫持有三种后果:
域名被错误解析,网页跳转到纠错导航页,导航页被植入恶意广告。
错误域名解析到非正常页面。
直接被解析到攻击者指定的站点或广告页面。
DNS被劫持,用户无法正常浏览内容,甚至可能因此上当受骗,严重影响用户体验和网站业务的开展。
HTTP劫持
HTTP劫持相对于DNS劫持温和一些。在服务器与客户端进行数据传输时,攻击者伪装成服务器,响应客户端请求,从而抛弃真正服务器的数据传输。
当网站遭受HTTP劫持时,同样会造成一些后果:
出现3xx重定向跳转;
JS内容被篡改;
html内容被篡改;
这样一来,目标网站会出现弹窗广告、页面广告等多种广告形式,或者网站的一些内容被黑客修改,用于达到某种目的。
怎么防止网站被劫持?
防止网站被劫持,有两种思路。
对客户端和服务器的数据传输进行加密
隐藏http请求的特征
对客户端和服务器的数据传输进行加密的终极解决办法,是安装ssl证书,将站点从http升级为https,因为https协议会对数据传输进行加密,攻击者也就无法拦截它们之间的数据传输,从而进行劫持了。
另外一种是对URL进行加密,对URL进行加密后,用户向CDN节点发起请求,C再由CDN节点进行解密,获取真实的URL链接并响应给用户。
以上就是两种劫持方式的简单介绍了。随着ssl证书的普及,对http和DNS进行劫持的案例越来越少,但因为攻击者技术也在不断革新,所以不能忽略它们对网站的影响,应当重视起来。