zoukankan      html  css  js  c++  java
  • 【图解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提供认证和加密处理及摘要功能。
    --不要用肉体的勤奋,去掩盖思考的懒惰--
  • 相关阅读:
    Kubelet 会做些什么
    k8s apiserver 源码阅读笔记
    robotframework环境安装
    Hper-V卸载
    Hyper-V安装虚拟机
    git下载/上传文件提示:git did not exit cleanly
    jmeter使用csv传参进行并发测试验证
    jenkins启动
    win7系统中 python2、python3安装后再安装插件时遇到的问题
    Base.py最基层的一些方法的封装--自己整理的一些小内容
  • 原文地址:https://www.cnblogs.com/pingguo-softwaretesting/p/14970172.html
Copyright © 2011-2022 走看看