HTTP协议的缺点
- 通信使用明文(不加密),内容可能被窃听。
- 不验证通信方的身份,因此有可能遭遇伪装
- 无法证明报文的完整性,所以可能已遭到篡改。
HTTP隐患(基于第一点)
由于HTTP本身不具备加密的功能,所以也无法做到对通信整体(使用HTTP协议通信的请求和响应)进行加密。即,HTTP报文使用明文方式发送。
为了防止被窃听,最为普及的就是加密技术。加密的对象可以有这么几个
1.通信的加密
HTTP中没有加密机制,但可以通过和SSL(Secure Socket Layer,安全套接层)或TLS(Transport Layer Security,安全传输协议)的组合使用,加密HTTP的通信内容。用SSL建立安全通信线路之久,就可以在这条线路上进行HTTP通信。
2.内容的加密
由于HTTP协议中没有加密机制,那么就对HTTP协议传输的内容本身加密。即把HTTP报文里所含的内容进行加密处理。如下图所示:
HTTP隐患(基于第二个缺点)
1.无法确定请求发送至目标的Web服务器是否是按真实意图返回响应的那台服务器。有可能是已伪装的服务器
2.无法确定响应返回到的客户端是否是按真实意图接收相应的那个客户端。有可能是已经伪装的客户端
3.无法确定正在通信的对方是否具备访问权限。因为某些服务器上保存着重要信息,只想发给特定用户。
4.无法判断请求是来自何方,出自谁手。
5.即使是无意义的请求也会照单全收。无法阻止海量请求下的DOS攻击。
HTTP隐患(基于第三个缺点)
接收到的内容可能有误
由于 HTTP 协议无法证明通信的报文完整性, 因此, 在请求或响应送出之后直到对方接收之前的这段时间内, 即使请求或响应的内容遭到篡改, 也没有办法获悉。很容易被中间人进行攻击,篡改报文内容
HTTPS定义
HTTP协议中没有加密机制,但可以通过和SSL或TLS的组合使用,加密HTTP通信内容。
SSL:安全套接层 TLS:安全传输层协议
HTTPS:与SSL组合使用的HTTP称为HTTPS
HTTPS=HTTP+加密+认证+完整性保护
应用(HTTP) |
SSL |
TCP |
IP |
HTTPS运行的大致构成
相关介绍
公开密钥加密使用一对非对称的密钥。 一把叫做私有密钥(private key) , 另一把叫做公开密钥(public key) 。 顾名思义,私有密钥不能让其他任何人知道, 而公开密钥则可以随意发布, 任何人都可以获得。如,用户使用公开密钥加密后传输给服务器后,服务器再使用对应的私钥进行解密。利用这种方式, 不需要发送用来解密的私有密钥, 也不必担心密钥被攻击者窃听而盗走。公开密钥加密方式还是存在一些问题的。 那就是无法证明公开密钥本身就是货真价实的公开密钥。
共享密钥加密使用对称的密钥。加密和解密同用一个密钥的方式称为共享密钥加密(Common keycrypto system) , 也被叫做对称密钥加密。在传输过程中必须将密钥和传输内容同时发给对方。传输过程中极易造成密钥被盗。
数字证书:数字证书认证机构对服务器正确性的一种确认。服务器的运营人员向数字证书认证机构提出公开密钥的申请。 数字证书认证机构在判明提出申请者的身份之后, 会对已申请的公开密钥做数字签名, 然后分配这个已签名的公开密钥, 并将该公开密钥放入公钥证书后绑定在一起。服务器会将这份由数字证书认证机构颁发的公钥证书发送给客户端,以进行公开密钥加密方式通信。 公钥证书也可叫做数字证书或直接称为证书。
HTTPS安全可靠,但所有网站所有的Web网站并不一直使用HTTPS
- 因为和纯文本通信相比,加密通信会消耗更多的CPU以及内存资源。
- HTTPS通信证书不可少,证书需要购买。