---恢复内容开始---
HTTP主要有下列缺点:
通信使用明文(不加密),内容可能会被窃听;
不验证通信方的身份,因此有可能遭遇伪装;
无法证明报文的完整性,所以有可能已遭篡改。
这些缺点是由什么引起的呢?怎么处理这些个缺点呢?
通信使用明文可能会被窃听
也就是说,HTTP报文使用的是未经过加密的报文方式发送。因为TCP/IP是可能被窃听的网络,而且TCP/IP协议族的工作机制就是可以使,通信内容在所有的通信线路上都有可能遭到窥视,即使是已经加密处理够的通信,也会被窥视到通信内容,因为加密处理后的报文信息本身还是会被看到。
如此一来,为了在信息有可能会被窥视的情况下还能保证信息的安全,可以采取加密技术,加密的方法有两种:
加密的对象 |
加密的解释 |
通信的加密 |
HTTP协议本身没有加密机制,但是可以通过和SSL或TLS的组合使用,加密HTTP的通信内容,用SSL建立安全通信线路后,就可以在这条线路上进行HTTP通信了 |
内容的加密 |
把HTTP报文里所含的内容进行加密处理 |
不验证通信方的身份就可能遭遇伪装
HTTP协议中的请求和响应不会对通信方进行确认。
也就是说,在HTTP协议通信时,由于不存在确认通信方的处理步骤,任何人都可以发起请求。另外,服务器只要接收到请求,不管对方是说都会返回一个响应(但也仅限于发送端的IP地址和端口号没有被Web服务器设定限制访问的前提下)。所以,会出现以下隐患:
①无法确定请求发送至目标的Web服务器是否是按真实意图返回响应的那台服务器。有可能是已伪装的客户端。
②无法确定响应返回到的客户端是否是按真实意图接收响应的那个客户端。有可能是已伪装的客户端。
③无法确定正在通信的对方是否具备访问权限。因为某些Web服务器上保存着重要的信息,只想发给特定用户通信的权限。无法判定请求是来自何方、出自谁手。
④即使是无意义的请求也会照单全收。无法阻止海量请求下的DoS攻击。
那么要怎么确认通信方?可以使用SSL,SSL不仅提供加密处理,而且还使用了一种被称为证书的手段,可用于确定方,而证书由值得信任的第三方机构颁发,用以证明服务器和客户端是实际存在的。另外,伪造证书从技术上角度来说是异常困难的事情,所以只要能够确认通信方持有的证书,即可判断通信方的真实意图。
无法证明报文完整性,可能已遭篡改
由于HTTP协议无法证明通信的报文完整性,所以没有任何办法确认,发出的请求/响应和接收到的请求/响应是前后相同的,所以在请求或响应在传输途中,造攻击者拦截并篡改内容的攻击即中间人攻击,我们一般是察觉不到的。
那么可以用MD5和SHA-1等散列值校验的方法,以及用来确认文件的数字签名方法来防止篡改,不过即使是这样,还是有较大的漏洞,所以还是采用HTTPS协议会更好一点。
由以上的缺点和缺点的处理方法,我们可以知道,一个更可靠的协议需要被创造出来,于是HTTP加上加密处理和认证以及完整性保护后即是HTTPS的技术出现了。
HTTPS并非是应用层的一种新协议,它其实就是身披SSL协议外壳的HTTP,因为通常HTTP直接和TCP通信,所以当时用SSL时,则演变成先和SSL通信,再由SSL和TCP通信。如下图所展示: