1.HTTP 的缺点
- 通信使用明文(不加密),内容可能会被窃听
- 不验证通信方的身份,因此有可能遭遇伪装
- 无法证明报文的完整性,所以有可能已遭篡改
2.通信使用明文可能会被窃听
由于HTTP本身不具备加密的功能,所以也无法做到对通信整体进行加密。即,HTTP报文使用明文的方式发送。
2-1 TCP/IP 是可能被窃听的网络
- 由于通信线路上的某些网络设备、光缆、计算机都不可能是个人的私有物,所有不排除某个环节中会遭到恶意窥视行为。
- 即使是通过加密处理的通信,也会被窥视到通信内容,只是别人拿到的是经过加密的内容可能破解不了。
2-2 加密处理防止被窃听
- 通信的加密
- 内容的加密
通信的加密
- HTTP协议中没有加密机制,可以通过和SSL(安全套接层)或TLS(安全传输层协议)组合使用。
- 用SSL建立安全通信线路后,就可以在这条线路上进行HTTP通信了。
- 与SSL组合使用的HTTP被称为HTTPS。
内容的加密
- 即对HTTP报文里所含有的内容进行加密处理。
- 前提是需要客户端和服务器端同时具备加密和解密的机制
- 但是还是会有被篡改的风险
3.不验证通信方的身份,因此有可能遭遇伪装
3-1 任何人都可发起请求
在HTTP协议通信时,由于不存在确认通信方的处理步骤,任何人都可以发起请求;
服务器只要接收到请求,不管是谁都会响应(除非发送端被web服务器限制访问)
因此会存在一下隐患:
- 无法确定请求发送至目标的web服务器是伪装的还是真实的(原本要访问的)
- 无法确定接收响应的客户端是伪装的还是真实的。
- 无法确定正在通信的对方是否具备访问权限。
- 无法判定请求是来自何方。
- 即使是无意义的请求也会照单全收,无法阻止海里请求下的Dos(拒绝服务攻击)
3-2 查明对手的证书
- SSL不仅提供加密处理,而且还使用了一种被称为证书的手段,用于确认通信方
- 证书由值得信任的第三方机构颁发,用以证明服务器端和客户端时实际存在的
- 客户端在开始通信前先确认服务器的证书以确认服务器端身份
- 客户端持有证书完成个人身份的确认
4.无法证明报文的完整性,所以有可能已遭篡改
由于HTTP协议没法证明通信的报文的完整性,因此在请求或响应发出后知道对方接收之前的这段时间内,即使请求或响应的内容遭到篡改,也没有办法获悉。
4-1 如何防止篡改
- 用MD5和SHA-1 等散列值校验
- 用数字签名确认文件