【图解Http 学习摘要】四、HTTP 缺点

在 HTTP 协议中有可能存在信息窃听或身份伪装等安全问题(其实也不仅仅出现与 HTTP,只要是未加密的协议都会存在),使用 HTTPS 通信机制可以有效的防止这些问题。

HTTP 的缺点

1. 通信使用明文(不加密),内容可能会被窃听。

由于 HTTP 本身不具备加密的功能,所以 HTTP 报文使用明文方式传送。

传送又是在 TCP/IP,这东东就是一个可以被窃听的网络,你在上面传东西自然就有被恶意窃听的风险了。

所谓的网络,是由能连通到全世界的网络组成的。无论世界哪个角落的服务器在和客户端通信时,在此通信线路上的某些网络设备、光缆、计算机等都不可能是个人的私有物,所以不排除某个 环节中会遭到恶意窥视行为。

另外,就算你把通信内容加密了,但是加密处理后的内容依然可以被看到。

加密处理防止被窃听

  • 通信的加密:HTTP 协议通过和 SSL(Secure Socket Layer,安全套接层),也就是 HTTPS。
  • 内容的加密:将参与通信的内容本身加密的方式,前提是要求客户端和服务器同时具备加密和解密机制,主要应用在 Web 服务中。但是内容仍有被篡改的风险。

2. 不验证通信方的身份,因此可能遭遇伪装。

HTTP 协议中的请求和响应不会对通信方进行确认。

那么问题来了:

  • 客户端 A 发送请求给服务端 B,不知道返回响应的 B 是不是真正的服务器,有可能是伪装的 web服务。
  • 服务端 B 给客户端 A 返回响应,也不知道接收响应的 A 是不是真正的那个客户端,有可能是伪装的 客户端。
  • 无法确定正在通信的对方是否具备访问权限。因为某些 Web 服务器上保存着重要的信息,只想发给特定用户通信的权限。
  • 无法判定请求是来自何方、出自谁手。
  • 即使是无意义的请求也会照单全收。无法阻止海量请求下的 DoS 攻击(Denial of Service,拒绝服务攻击)

查明对手的证书

  • SSL不仅提供加密处理,而且还使用了一种被称为证书的手段,可用于确定方。
  • 证书由值得信任的第三方机构颁发,用以证明服务器和客户端是 实际存在的。
  • 伪造证书从技术角度来说是异常困难的一件事。

所以只要能够确认通信方(服务器或客户端)持有的证书,即可判断通信方的真实意图。

3. 无法证明报文的完整性,所以有可能已遭篡改。

所谓完整性是指信息的准确度。若无法证明其完整性,通常也就意味着无法判断信息是否准确,问题也就出现了:

  • 双方接收到的内容可能有误。

在请求或响应送出之后直到对方接收之前的这段时间内,如果请求或响应的内容遭到篡改,HTTP 协议无法获悉,这种叫中间人攻击

如何防止篡改

  • 使用 HTTP 协议确定报文完整性的方法,常用的是 MD5 和 SHA-1 等散列值校验的方法,以及用来确认文件的数字签名方法。可惜的是,用这些方法也依然无法百分百保证确认结果正确。因为 MD5 本身被改写的话,用户是没有办法意识到的。
  • 还是得用 HTTPS,SSL提供认证和加密处理及摘要功能。
posted @ 2021-07-05 08:08  把苹果咬哭的测试笔记  阅读(151)  评论(0编辑  收藏  举报