@
ysc3839 只要你还是建立在 http 协议上,那么即使有了证书认证机制,仍然无法避免被中间人
例如 http 报文
```
GET / HTTP/1.1
Host:
www.baidu.comConnection: keep-alive
Cache-Control: max-age=0
DNT: 1
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,zh-TW;q=0.7,en-US;q=0.6,ja;q=0.5
```
即使你在此基础上实现 TLS, 但是本质上还是采用 HTTP 协议,那么我完全可以这样拦截
```
原来的请求方式
浏览器 -> 发送 GET 请求 -> 自己实现的 TLS 封装的数据 -> 后端校验数据
拦截之后的请求方式
浏览器 -> 拦截发送 GET 请求 -> 植入 JS 脚本代码 -> 跳转到钓鱼网站
根本就不走你之前的后端服务器。
```
浏览器为什么会安全,因为浏览器拿到了原始报文,通过 浏览器 -> 后端服务器,中间是加密的,意味要么成功,要么失败,而自己去实现 TLS, 无非是和鸵鸟一样把头埋在沙子里面,认为自己安全了,实际上并不安全