在 HTTP 协议中有可能存在信息窃听或身份伪装等安全问题。使用 HTTPS 通信机制可以有效地防止这些问题。
先谈谈http的缺点:
- 通信使用明文,不进行加密,内容可能被窃听
- 不验证通信方身份,因此可能遭遇伪装
- 无法证明报文,可能会被篡改
TCP/IP 是可能被窃听的网络
如果要问为什么通信时不加密是一个缺点,这是因为,按
TCP/IP 协议族的工作机制,通信内容在所有的通信线路上都有
可能遭到窥视。
所谓互联网,是由能连通到全世界的网络组成的。无论世界哪个
角落的服务器在和客户端通信时,在此通信线路上的某些网络设
备、光缆、计算机等都不可能是个人的私有物,所以不排除某个
环节中会遭到恶意窥视行为。
即使已经过加密处理的通信,也会被窥视到通信内容,这点和未
加密的通信是相同的。只是说如果通信经过加密,就有可能让人
无法破解报文信息的含义,但加密处理后的报文信息本身还是会
被看到的。
图:互联网上的任何角落都存在通信内容被窃听的风险
1、加密处理防止被窃听
在目前大家正在研究的如何防止窃听保护信息的几种对策中,最为普及的就是加密技术。加密的对象可以有这么几个。
-
通信的加密
一种方式就是将通信加密。HTTP 协议中没有加密机制,但可以通过和 SSL(Secure Socket Layer,安全套接层)或
TLS(Transport Layer Security,安全层传输协议)的组合使用, 加密 HTTP 的通信内容。
用 SSL建立安全通信线路之后,就可以在这条线路上进行 HTTP 通信了。与 SSL组合使用的 HTTP 被称HTTPS(HTTP
Secure,超文本传输安全协议)或 HTTP over SSL。
-
内容的加密
还有一种将参与通信的内容本身加密的方式。由于 HTTP 协议中 没有加密机制,那么就对 HTTP 协议传输的内容本身加密。即把 HTTP 报文里所含的内容进行加密处理。 在这种情况下,客户端需要对 HTTP 报文进行加密处理后再发送 请求。
2、不验证通信方的身份就可能遭遇伪装
用http通信时,任何人都能发起请求,会存在各种隐患:
无法确定请求发送至目标的 Web 服务器是否是按真实意
图返回响应的那台服务器。有可能是已伪装的 Web 服务
器。
无法确定响应返回到的客户端是否是按真实意图接收响
应的那个客户端。有可能是已伪装的客户端无法确定正在通信的对方是否具备访问权限。因为某些
Web 服务器上保存着重要的信息,只想发给特定用户信的权限。
139无法判定请求是来自何方、出自谁手。
即使是无意义的请求也会照单全收。无法阻止海量请求
下的 DoS 攻击(Denial of Service,拒绝服务攻击)
虽然使用http不能确定通信方,但如果使用SSL就可以了。SSL不紧提供加密处理,还使用了一种称为证书的手段,可以用于确定通信方。
证书由第三方机颁发,用于证明客户端和服务器是确实存在的,另外,伪造证书是很困难的,所以只要能够确认通信方(服务端或客户端)持有证书,就可以确定他们的身份了。
3 无法证明报文完整性,可能已遭篡改
所谓完整性是指信息的准确度。若无法证明其完整性,通常也就意味 着无法判断信息是否准确。
- 接收到的内容可能有误
- 如何防止篡改
仅靠 HTTP 确保完整性是非常困难的,因此 通过和其他协议组合使用来实现这个目标。
讲了那么多就是为了引入我们的https,
HTTP+ 加密 + 认证 + 完整性保护 =HTTPS
未完待续。。。。。