众所周知,网络劫持共分为两大类: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进行劫持的案例越来越少,但因为攻击者技术也在不断革新,所以不能忽略它们对网站的影响,应当重视起来。