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

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

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


HTTP 的缺点


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


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


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


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


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


1268169-20210704212634527-346246954.png


加密处理防止被窃听


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


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


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


那么问题来了:


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


查明对手的证书


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


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


1268169-20210704220212381-1481649966.png


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


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


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


1268169-20210704220734383-1303947082.png


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


1268169-20210704220853353-2114640082.png


如何防止篡改


  • 使用 HTTP 协议确定报文完整性的方法,常用的是 MD5 和 SHA-1 等散列值校验的方法,以及用来确认文件的数字签名方法。可惜的是,用这些方法也依然无法百分百保证确认结果正确。因为 MD5 本身被改写的话,用户是没有办法意识到的。


  • 还是得用 HTTPS,SSL提供认证和加密处理及摘要功能。
相关文章
|
3月前
|
JavaScript
Node.js【GET/POST请求、http模块、路由、创建客户端、作为中间层、文件系统模块】(二)-全面详解(学习总结---从入门到深化)
Node.js【GET/POST请求、http模块、路由、创建客户端、作为中间层、文件系统模块】(二)-全面详解(学习总结---从入门到深化)
30 0
|
4月前
|
JavaScript
Node.js【GET/POST请求、http模块、路由、创建客户端、作为中间层、文件系统模块】(二)-全面详解(学习总结---从入门到深化)(上)
Node.js【GET/POST请求、http模块、路由、创建客户端、作为中间层、文件系统模块】(二)-全面详解(学习总结---从入门到深化)
32 0
|
4月前
|
JavaScript
Node.js【GET/POST请求、http模块、路由、创建客户端、作为中间层、文件系统模块】(二)-全面详解(学习总结---从入门到深化)(下)
Node.js【GET/POST请求、http模块、路由、创建客户端、作为中间层、文件系统模块】(二)-全面详解(学习总结---从入门到深化)
27 0
|
4月前
|
缓存 前端开发
HTTP协议学习
HTTP协议学习
16 0
node中的fs模块和http模块的学习
node中的fs模块和http模块的学习
|
5月前
|
缓存 Android开发 数据安全/隐私保护
android开发,使用kotlin学习HTTP访问网络
android开发,使用kotlin学习HTTP访问网络
78 0
|
5月前
|
缓存 安全 前端开发
【HTTP学习】
【HTTP学习】
|
7月前
Gin 学习之 HTTP 请求方法
Gin 学习之 HTTP 请求方法
51 0
|
2月前
|
前端开发
webpack如何设置devServer启动项目为https协议
webpack如何设置devServer启动项目为https协议
181 0
|
6天前
|
存储 算法 安全
[计算机网络]---Https协议
[计算机网络]---Https协议