前言

大家好,我是蜗牛,在上一篇中,我们介绍了不同版本的HTTP区别和发展背景,这篇文章我们来聊聊HTTP的缺点,HTTP缺点大致总结有以下三点:

其实以上问题不止HTTP有,其他未加密的协议也有此类问题,下面就以上三点详细介绍

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

因为HTTP不具备加密的功能,所以无法对通信报文进行加密,所以是使用明文进行发送,那么就有可能被窃听。

HTTP缺点有哪些,如何解决

可以看到窃听无处不在

窃听的方式有多种,比较常见有抓包工具(Wireshark)或者嗅探器(Sniffer)等工具,进行窃听。

下面图片是使用Wireshark抓取的数据:

HTTP缺点有哪些,如何解决

如何防止

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

HTTP协议的请求与响应不会对通信方进行身份的确认,因此这种无法确认通信方,总结有以下几类问题:

如何防止

使用SSL才可以防止此类问题,SSL不仅提供加密功能,还提供证书,通过证书可以确定通信的方是意料之中的,这里肯定有人会问那证书如何保证可信呢?

证书是有公认值得信赖的CA机构颁发的,其他机构是没有颁发证书权限的。CA机构是可信赖的,那么颁发的证书也是可信赖的。

HTTP缺点有哪些,如何解决

客户端验证服务端是否是可信的服务端,即单向认证。

HTTP缺点有哪些,如何解决

客户端与服务端相互认证,即双向认证。

无法证明报文的完整性,有可能会被篡改

所谓完整性是指信息的准确度,无法证明完整性,那么也就无法判定信息是否准确。

由于HTTP协议无法证明通信的完整性,那么请求或者响应过程中报文就有可能被篡改,而服务端或者客户端是无法感知的。

HTTP缺点有哪些,如何解决

比如从网上下载的内容,是无法确认下载后的内容是否跟服务器上的内容一致。

像这样在请求/响应途中,遭攻击者拦截并篡改内容攻击,称为中间人攻击。

HTTP缺点有哪些,如何解决

如何防止

HTTP缺点有哪些,如何解决

点击下载后,可以查看对应文件签名或者散列值,当我点击MD5后,如下图:

HTTP缺点有哪些,如何解决

通过对下载后文件在通过MD5生成散列码,与官网上的散列码进行比较,来确定文件是否被篡改。

HTTP缺点有哪些,如何解决

但是从其他方式证明此种方式也不是绝对安全的,具体可以参见:http://bobao.360.cn/news/detail/768.html大概意思就是构造”前缀碰撞法“,来制造MD5值一样,文件内容不一样的文件。

总结

HTTP虽然使用极为广泛, 但是却存在不小的安全缺陷, 主要是其数据的明文传送和消息完整性检测的缺乏, 而这两点恰好是网络支付, 网络交易等新兴应用中安全方面最需要关注的

因此为了解决以上问题需要和SSL/TLS相关协议组合,这就是HTTPS,下篇我们介绍HTTPS