本文主要讲HTTP 劫持(也叫网页劫持)以及与DNS劫持的区别。其实两者的区别是非常明显的,很容易辨别。DNS劫持是整个跳转网页不同,而HTTP 劫持往往只是在页面上添加一个小窗,但这小窗并不属于网页本身的广告,有时候无论你访问什么网页,这小窗都不会消失,甚是烦人。
大家平时上网的时候应该遇到过,就是在不管打开什么网页,下方角落里有时候会出现一些小广告,有时候这些广告,不是访问的站点为了盈利而投放的广告,而是第三方的运营商提供的,这就是 HTTP 劫持。
HTTP 劫持的原理就是在服务器和用户之间的信息传输之中添油加醋,这是由于信息没有被加密而造成的。用户请求了网站服务器,服务器返还网页给用户,在传输过程中就给了他人加料的机会。就算DNS服务器可靠,也无法防止HTTP劫持。
HTTP 劫持的实现原理
一般来说 HTTP劫持主要通过下面几个步骤来做:
- 1、标识HTTP连接。在天上飞的很多连接中,有许多种协议,第一步做的就是在TCP连接中,找出应用层采用了HTTP协议的连接,进行标识。
- 2、篡改HTTP响应体,可以通过网关来获取数据包进行内容的篡改。
- 3、抢先回包,将篡改后的数据包抢先正常站点返回的数据包先到达用户侧,这样后面正常的数据包在到达之后会被直接丢弃。
与 DNS 劫持的区别举例
DNS劫持的现象:你输入的网址是http://www.google.com,出来的是百度的页面;
HTTP劫持的现象:你打开的是知乎的页面,右下角弹出唐老师的不孕不育广告。
DNS劫持就是你想去存钱运营商却把你拉到了劫匪手中;
而HTTP劫持就是你从服务器买了一包零食电信给你放了一坨屎,横竖都很恶心人。
DNS劫持是你想去医院的时候,把你给丢到火车站;
HTTP劫持是你去医院的时候,有人半途上车给你塞小广告。
DNS劫持:在DNS服务器中,将www.xxx.com的域名对应的IP地址进行了变化。你解析出来的域名对应的IP,在劫持前后不一样;
HTTP劫持:你DNS解析的域名的IP地址不变。在和网站交互过程中的劫持了你的请求。在网站发给你信息前就给你返回了请求。
HTTP 劫持解决方法
对付HTTP劫持,最好的方法之一,就是使用HTTPS来连接网页。而使用HTTPS,在传输数据过程中,数据是加密的。就如同原先开车被人在车窗塞小广告,现在把窗都关紧,他人自然再也无法插足。
HTTPS不仅可以防止HTTP劫持,也能够较好地防止DNS劫持,这是由于HTTPS的安全是由SSL来保证的,需要正确的证书,连接才会成立。如果DNS把域名解析到了不对应的IP,是无法通过证书认证的,连接会被终止。
实际上,现在已经有越来越多的网站支持HTTPS,但为了兼容等问题,不少网站也同时提供HTTP连接,例如著名的视频网站哔哩哔哩。主动使用HTTPS来进行连接,不但有效防止网页劫持,还能够保护隐私。
此外,还可以向运营商客服打电话申诉,要求他们撤除,不行的话向国家工信部投诉。
原文地址:https://www.boce.com/news/1004.html