原文: https://blog.csdn.net/xyz_dream/article/details/80109715
最近csdn头条出现”黑客通过DNS劫持,盗取以太坊用户的虚拟货币”的标题,点进去看了一下。之前也听过DNS
劫持和http劫持的一些概念,但是没有和https联系过。这一下恍然大悟,之前看过数字签名,数字证书这些东西
的概念,但是没有过多把这些联系起来。其实最简单的一个DNS劫持就是修改windows下的hosts文件的内容,最
简单的一个劫持实例,当你在家要看电影的时候前一天还是好好的那个网站还能打开,于是你it出生的父亲修改了电
脑的hosts文件,从此这个网站你都上不去了。哈哈,举个小例子,以后其实这一招对于小孩上网页游戏网站有点
作用,4399这些网站在hosts文件域名映射瞎指向一个不能访问的ip即可,网站就”不能访问了”,打消孩子访问游
戏的念头,也是一个小恶作剧。
那么正题来了。域名查询有一个问题,就是全球的DNS根服务器也就10来个,不可能每个人上网都去根服务器
请求一次域名解析,那根服务器是扛不住的。所以呢,搞缓存啊。根服务器下又有每个国家的DNS服务器,每个国
家的ISP又有自己的DNS服务器,每个省,每个市区….都建立自己的DNS服务器。这样的话,假如你请求
www.baidu.com,其实先在你的hosts文件查找是否有找到映射的ip,没有向你的局域网找,没有再往上找,假如
到ISP已经存在www.baidu.com的ip映射,ok此时返回过来拿到ip,继续访问下去,最终访问到baidu。如果一直
找不到,会继续往上一级找,最终还是找不到才会去根服务器找。这些映射都有缓存时间的,并且时间一般可能在
20多天左右,那么对于根服务器来说完全是能接受的访问频率。那么DNS劫持也就是黑客在你上网的某个网络中
要经过的DNS服务器把DNS解析记录改了,将映射ip指向自己做了和你要访问的网站一模一样。例如你本来要冲q
币,此时访问www.qq.com你看到浏览器地址栏,此域名完全没有问题,”确信”不会是钓鱼网站,然后你就怪怪输
入账号密码,付费。然后你的钱就没了,去看自己的qq没有充值上,你还以为是系统的错误,完全不会意识到这
个就是钓鱼网站!所以说这个隐蔽性很强,就算是程序员你也不会每次请求去看人家网站的ip地址吧,就算是ip地
址你每次看,也不见得你能把腾讯网站的所有ip地址记下来吧?
所以呢,https此时出来了。怎么保证你访问的www.qq.com就是真正的腾讯公司呢?ssl证书配置https之后就能
确保你访问的是真正的腾讯网站。因为证书中心在申请了证书的时候都是通过严格审核的,所以由此保证qq.com
就是腾讯公司的。因为尽管DNS劫持了qq.com,但是他伪造不了https的访问方式,也就是说此时他肯定不能支持
https://www.qq.com的方式,浏览器地址栏上肯定是http://www.qq.com。因为证书他是伪造不出来的,ssl证书
这些信息在qq.com的服务器上以及部署,https访问必须在其服务器上配置ssl证书,但是黑客拿不到。所以浏览
器有时候会弹出非https安全链接的时候要注意了,你现在访问的”正规”网站可能是假的,你的DNS可能被劫持
了。DNS隐蔽性太强了,所以chrome慢慢的开始对于http的网站访问提示不安全,以后的网站肯定是转向https的趋势。