做过网站的,或多或少的遇到过http劫持问题。当然未做过网站的,也可能遇到http劫持,比如我自己曾经遇到过,网站下载一个进销存软件手机apk文件,结果却下载下来一个一刀999级的apk游戏。这就是http劫持的一个案例,生活中关于http劫持的例子还有很多,本文主要讲解web服务器端http升级到https防劫持的问题。
最常见的http劫持是公共场合免费使用wifi,访问网页后随机出现了不可描述的小广告。而原本我访问的网站为某公司的正规官方网站,并没有投放这些相关的小广告啊,这是为什么呢?答案就是你访问的这个网站使用的是http协议,有被劫持的可能。
网站被运营商或wifi热点路由器劫持了,它往你的html里面注入了一段广告的html或js脚本,如下图所示:
图解http劫持
中间人的身份比较特殊,是运营商或者接入设备,所以它是在正常的连接上面的。也可以说由于运营商暗地里做了劫持,你也可以认为它不是一个正常的连接了。
不管怎么样,这种劫持也叫http劫持只发生在http连接上,而https的连接是没这个问题的,基本只要打开的是https的网页都不会被注入广告。因为传输的数据都是加密的,中间人收到的是一串无法解密的文本,它也不知道怎么篡改。
防火防盗防运营商,但是注入广告还算是小事,因为如果是http连接你的数据在网络上都是明文传输的,包括你的密码等敏感信息,你和服务器之间经过的路由都可以嗅探到你的数据,可以做些修改如嵌入一个广告,做一些破坏,或者只单纯的抓取信息如邮件内容、账号密码等。所以使用https是很有必要的,火狐会在非https的网页的密码输入框提示不安全:
Chrome/firefox等浏览器会在较明显的位置提示当前http网站不安全
https的网站还有一个好处就是能够提升网站的SEO(谷歌百度等主流web搜索引擎都已经明确表示对https的支持)。
在外面连的公共wifi,使用https能够减少账号信息被盗的风险,但也不是100%安全,因为它可以用其它的方式如在你的设备上种植木马等获取和控制你的账号。
不管怎么样,搞一个https还是很有必要的,至少不要让别人以为那个垃圾小广告是你自己的网站打的。
https升级后的问题是:加密和解密需要占用更多的CPU,并且加密后的数据会变大,但是据笔者观察加上gzip压缩之后,https传输的内容大小几乎和http一样。除了正常的tcp连接之外,还要建立ssl连接,这个时间一般在0.3s ~ 0.5s左右,这个是需要付出点代价的,但是由于浏览器左下角会提示用户“正在建立安全连接”,有一个缓冲的过程,所以其实还好。
摘自:互联网