在 HTTP 协议中有可能存在信息窃听或身份伪装等安全问题。使用 HTTPS 通信机制可以有效的防止这些问题。本章我们就了解一下 HTTPS 。
7.1、HTTP 的缺点
到现在为止,我们已了解到 HTTP 具有相当优秀和方便的一面,然而 HTTP 并非只有好的一面,事物皆具有两面性,它也是有很多不足之处的。
HTTP 主要有这些不足,举例如下。
这些问题不仅在 HTTP 上出现,其他未加密的协议中也会存在这类问题。
除此之外,HTTP 本身还有很多缺点。而且,还有像某些特定的 Web 服务器和特定的 Web 浏览器在实际应用中存在的不足(也可以说成是脆弱性或安全漏洞),另外,用 Java 和 PHP 等编程语言开发的 Web 应用也可能存在安全漏洞。
7.1.1、通信使用明文可能会被窃听
由于 HTTP 本身不具备加密的功能,所以也无法做到对通信整体(使用 HTTP 协议通信的请求和响应的内容)进行加密。即,HTTP 报文使用明文(指未经过加密的报文)方式发送。
TCP/IP 是可能被窃听的网络
如果要问为什么通信时不加密是一个缺点,这是因为,按 TCP/IP 协议族的工作机制,通信内容在所有的通信线路上都有可能遭到窥视。
所谓互联网,是由能连通到全世界的网络组成的。无论世界那个角落的服务器在和客户端通信时,在此通信线路上的某些网络设备、光缆、计算机等都不可能是个人的私有物,所有不排除某个环节中会遭到恶意窥视行为。
即使已经过加密处理的通信,也会被窥视到通信内容,这点和未加密的通信是相同的。只是说如果通信经过加密,就有可能让人无法**报文信息的含义,但加密处理后的报文信息本身还是会被看到的。
窃听相同段上的通信并非难事。只需要收集在互联网上流动的数据包(帧)就行了。对于收集的数据包的解析工作,可以交那些抓包(Packet Capture)或者嗅探器(Sniffer)工具。
加密处理防止被窃听
在目前大家正在研究的如何防止窃听保护信息的几种对策中,最为普及的就是加密技术。加密的对象可以有这么几个。
通信的加密
一种方式就是将通信加密。HTTP 协议中没有加密机制,但可以通过和 SSL (Secure Socket Layer,安全套接层)或 TLS(Transport Layer Security,安全层传输协议)的组合使用,加密 HTTP 的通信内容。
用 SSL 建立安全通信线路之后,就可以在这条线路上进行 HTTP 通信了。与 SSL 组合使用的 HTTP 被称为 HTTPS (HTTP Secure,超文本传输安全协议【注意:HTTP 是超文本传输协议】)或 HTTP over SSL。
内容的加密
还有一种将参与通信的内容本身加密的方式。由于 HTTP 协议中没有加密机制,那么就对 HTTP 协议传输的内容本身加密。即把 HTTP 报文里含有的内容进行加密处理。
在这种情况下,客户端需要对 HTTP 报文进行加密处理后再发送请求。
诚然,为了做到有效的内容加密,前提是要求客户端和服务端同时具备加密和解密机制。主要应用在 Web 服务中。有一点必须引起注意,由于该方式不同于 SSL 或 TLS 将整个通信线路加密处理,所以内容仍有被篡改的风险。稍后我们会加以说明。
7.1.2、不验证通信方的身份就可能遭遇伪装
7.1.3、无法证明报文完整性,可能已遭篡改
7.2、http + 加密 + 认证 + 完整性保护 = https
7.2.1、http 加上加密处理和认证以及完整性保护后即是 https
7.2.2、https 是身披 ssl 外壳的 http
7.2.3、相互交换**的公开**加密技术
7.2.4、证明公开**正确性的证书
7.2.5、https 的安全通信机制