一个 web 请求从浏览器到 web 服务器的过程中,会经过许多的网络节点。每一个网络节点都有能力窃听和篡改 http 请求的内容,所以通过 http 进行的传输是不安全的。
危害
Http 窃听的危害:
- 窃听用户密码
- 窃听传输的敏感信息
- 非法获取个人资料
Http 篡改的危害:
- 插入广告(著名的运营商劫持问题)
- 重定向网站:将目标网站重定向到广告网站或其他危险网站
- 无法防御的 XSS 和 CSRF 攻击
运营商劫持
策略
Http 协议之所以很容易被窃听和篡改,那是因为 http 协议是明文传输。
这个问题,我们可以联想到军事上电报的传输上,进而想到将传输内容加密后进行传输。这样即使我们传输的内容被别人窃听了,那么他得到的也只是一堆对他看不懂的乱码。
在 web 传输中,我们可以通过 TLS(SSL)进行加密传输,如今应用比较广的 https 协议就是基于 TLS(SSL)来进行加密传输的。
SSL/TLS 协议的基本思路是采用公钥加密法,也就是说,客户端先向服务器端索要公钥,然后用公钥加密信息,服务器收到密文后,用自己的私钥解密。
中间人攻击
<