大话《图解HTTP》学习笔记 7期:确保Web安全的HTTPS
在 HTTP 协议中有可能存在信息窃听或身份伪装等安全问题。使用 HTTPS 通信机制可以有效地防止这些问题。
一、HTTP缺点
事物皆有两面,HTTP也有其不足之处:
1)通信使用明文,不加密,内容可能会被窃听; 2)不验证通信方的身份,因此有可能遭遇伪装; 3)无法证明报文的完整性,所以有可能已遭篡改。
1、通信使用明文可能会被窃听
由于 HTTP 本身不具备加密的功能,所以也无法做到对通信整体(使用 HTTP 协议通信的请求和响应的内容)进行加密。即,HTTP 报文使用明文(指未经过加密的报文)方式发送。
1)TCP/IP 是可能被窃听的网络
按TCP/IP协议族的工作机制,通信内容在所有的通信线路上都有可能遭到窥视。经过加密处理的通信,也会被窥视到通信内容,这点和未加密的通信是一样的。只是说如果通信加密,有可能让人无法破解报文信息的含义,但是加密处理后的报文信息本身还是会被看到的。
使用抓包工具可以获取HTTP协议的请求和响应的内容,并对其进行解析。例如使用GET方法发送请求、响应返回了200 OK,查看HTTP响应报文的全部内容等信息。
2)加密处理防止被窃听
如何防止窃听保护信息,最普及的就是加密技术。主要有通信的加密和内容的加密两种。
通信的加密: HTTP通过和SSL(Secure Socket Layer,安全套接层)或TLS(Transport Layer Security,安全层传输协议)的组合使用,加密HTTP的通信内容。即用SSL建立安全通信线路,然后再在这条线路上进行HTTP通信
。与SSL组合使用的HTTP被称之为HTTPS(HTTP Secure,超文本传输安全协议)或HTTPover SSL。
内容的加密: 这是一种将参与通信的内容本身加密的方式。即把HTTP报文里所含的内容进行加密处理,在这种情况下,客户端需要对HTTP报文进行加密处理后再发送请求。为了做到有效的内容加密,客户端和服务器应同时具备加密和解密机制。这种方法不同于通信加密,内容仍有可能被篡改。
2、不验证通信方的身份就可能遭遇伪装
HTTP协议中的请求和响应不会对通信方进行确认,即存在着以下隐患:
1)无法确定请求发送至目标的Web服务器是否按真实意图返回响应的那台服务器。有可能是伪装的服务器;
2)无法确定响应返回到的客户端是否是按真实意图接收响应的那个客户端。有可能是已伪装的客户端;
3)无法确定正在通信的对方是否具备访问权限。因为某些Web服务器上保存着重要信息,只想发给特定用户通信的权限;
4)无法判定请求是来自何方、出自谁手;
5)即使是无意义的请求也会照单全收,无法阻止海量请求下的DOS攻击(拒绝服务攻击)。
虽然HTTP协议无法确定通信方,但是用SSL则可以。SSL不仅提供加密处理,还可以使用一种称为证书的手段,可以用于确定对方。证书由值得信任的第三方机构颁发,用以证明服务器和客户端是实际存在的。只要确定通信方持有的证书,则可判断通信方的真实意图。另外,客户端持有证书即可完成个人身份的确认,也可用于Web网站的认证环节。
3、无法证明报文完整性,则有可能被篡改
完整性是指信息的准确度,如果无法证明完整性,则无法判断信息是否准确。因此有可能出现中间人攻击篡改后,服务器和客户端仍不知情。
虽然有使用HTTP协议确定报文完整性的方法,但是这并不便捷可靠。为了有效防止其中弊端,有必要使用HTTPS。SSL提供认证和加密处理及摘要功能。
二、HTTP+加密+认证+完整性保护=HTTPS
HTTP 加上加密处理和认证以及完整性保护后即是 HTTPS。
HTTPS并不是应用层的一种新协议,而是在HTTP通信接口部分用SSL和TLS协议代替
。因此,HTTP不再与TCP通信,而是先和SSL通信,再由SSL和TCP通信
。因此,HTTPS就是身披着SSL协议这层外壳的HTTP
。SSL协议是广泛使用的网络安全技术。
在采用 SSL 后,HTTP 就拥有了 HTTPS 的加密、证书和完整性保护这些功能。SSL 采用一种叫做公开密钥加密(Public-k ey cry ptography )的加密处理方式。
HTTPS采用共享密钥加密和公开密钥加密两者并用的混合加密机制
。若密钥能够实现安全交换,那么有可能会考虑仅使用公开密钥加密来通信。但是公开密钥加密与共享密钥加密相比,其处理速度要慢。
所以应充分利用两者各自的优势,将多种方法组合起来用于通信。在交换密钥环节使用公开密钥加密方式,之后的建立通信交换报文阶段则使用共享密钥加密方式
。
如果你觉得这篇文章对你有所帮助,那就顺便点个赞
吧,点点关注不迷路~
黑芝麻哇,白芝麻发,黑芝麻白芝麻哇发哈!
前端哇发哈