一、概述
HTTP的不足
- 通信使用明文(不加密),内容可能会被窃听。
- 不验证通信方的身份,因此有可能遇到伪装。
- 无法验证报文的完整性,所以有可能已遭篡改。
下面针对以上3点给出解决方案。
二、明文传输的问题
问题:
已知 HTTP 的不足,信息在网络发送过程的任何一个节点都有可能被窃取,导致了信息的不安全。
方案:
为了解决这个问题,我们可以对发送的信息进行加密处理,从而达到了安全传输的目的。(虽然加密后的信息仍可能被窃取,但用户无法对信息进行解密或解密的难度提升很多)。
加密策略
- 通信的加密
HTTP 协议中没有加密机制,但可以通 过和 SSL (Secure Socket Layer,安全套接层) 或TLS (Transport Layer Security,安全层传输协议) 的组合使用,加密 HTTP 的通信内容。
- 内容加密
对HTTP报文内容进行加密。如下图所示:
三、通信方身份伪装的问题
问题:
不验证通信方的身份,存在各种隐患:
- 无法确定请求发送 目 的 Web 服务器是 是 实意图返回 响应的 台服务器。有可能是已伪装的 Web 服务器
- 无法确定正在通信的对方是否具备访问权限。
- 无法判断请求来自何方,出自谁手。
- 即使是无意义的请求也会照单全收,所以可能存在Dos攻击。
方案:
查看请求方的证书,证书需要第三方权威机构颁发 (即请求方的身份合法性由颁发证书机构保证)。
SSL
提供了证书功能。
四、报文完整性的问题
问题:
HTTP 协议无法保证接收到的报文就是发送方请求的原始报文,也有可能在发送过程中被第三方劫持篡改过。如下图所示:
方案:
SSL
提供了摘要功能,可以验证信息的完整性。
五、HTTPS
HTTPS = HTTP + 加密+认证 + 完整性保护 = HTTP + SSL
由于
SSL
提供了加密、认证、完整性保护
功能,因此 HTTPS 相当于是HTTP + SSL
。
1. HTTPS 安全通信机制
2. SSL 的劣势
会导致请求和响应变慢。
主要有两个原因:
- 通信慢:除了TCP连接、发送 HTTP 请求、响应HTTP 外,还得进行 SLL通信,流程变多了。
- 使用 SSL 会对传输的内容进行加密处理,导致 CPU 和 内存消耗增加。