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

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 【图解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提供认证和加密处理及摘要功能。
相关文章
|
6月前
|
JavaScript
Node.js【GET/POST请求、http模块、路由、创建客户端、作为中间层、文件系统模块】(二)-全面详解(学习总结---从入门到深化)
Node.js【GET/POST请求、http模块、路由、创建客户端、作为中间层、文件系统模块】(二)-全面详解(学习总结---从入门到深化)
46 0
|
6月前
|
JavaScript
Node.js【GET/POST请求、http模块、路由、创建客户端、作为中间层、文件系统模块】(二)-全面详解(学习总结---从入门到深化)(上)
Node.js【GET/POST请求、http模块、路由、创建客户端、作为中间层、文件系统模块】(二)-全面详解(学习总结---从入门到深化)
48 0
|
4天前
|
算法 网络协议 安全
HTTP/2 协议的缺点是什么?
HTTP/2 协议的缺点是什么?
|
1月前
|
Java Maven Kotlin
vertx的学习总结7之用kotlin 与vertx搞一个简单的http
本文介绍了如何使用Kotlin和Vert.x创建一个简单的HTTP服务器,包括设置路由、处理GET和POST请求,以及如何使用HTML表单发送数据。
33 2
vertx的学习总结7之用kotlin 与vertx搞一个简单的http
|
2月前
|
网络协议 算法 数据安全/隐私保护
HTTP2和HTTP3区别?HTTP2有什么缺点?
总的来说,如果把HTTP/2比作是优化过的汽车,那HTTP/3就像是直升飞机,它不仅飞得快,而且即使前面有障碍也不会轻易停下。想要网站速度更快,HTTP/3无疑提供了更好的选择。
178 3
|
6月前
|
监控 Unix 应用服务中间件
Android-音视频学习系列-(八)基于-Nginx-搭建(rtmp、http)直播服务器
Android-音视频学习系列-(八)基于-Nginx-搭建(rtmp、http)直播服务器
|
4月前
|
网络协议 Dubbo Java
什么是RPC?RPC和HTTP对比?RPC有什么缺点?市面上常用的RPC框架?
选择合适的RPC框架和通信协议,对于构建高效、稳定的分布式系统至关重要。开发者需要根据自己的业务需求和系统架构,综合考虑各种因素,做出适宜的技术选型。
414 1
|
5月前
|
缓存 负载均衡 NoSQL
Redis系列学习文章分享---第十四篇(Redis多级缓存--封装Http请求+向tomcat发送http请求+根据商品id对tomcat集群负载均衡)
Redis系列学习文章分享---第十四篇(Redis多级缓存--封装Http请求+向tomcat发送http请求+根据商品id对tomcat集群负载均衡)
82 1
|
6月前
|
JavaScript
Node.js【GET/POST请求、http模块、路由、创建客户端、作为中间层、文件系统模块】(二)-全面详解(学习总结---从入门到深化)(下)
Node.js【GET/POST请求、http模块、路由、创建客户端、作为中间层、文件系统模块】(二)-全面详解(学习总结---从入门到深化)
53 0
|
6月前
|
缓存 前端开发
HTTP协议学习
HTTP协议学习
52 0