这一次讲一下HTTP协议的缺点。
(一)安全性
HTTP协议中有可能存在信息窃听或身份伪装等安全问题,比如爬虫就可以伪装成浏览器来
进行数据爬取。
HTTP协议主要有下列一些缺点:
1.通信使用明文(不加密),内容可能会被窃听
2.不验证通信方的身份,因此有可能遭遇伪装
3.无法证明报文的完整性,所以有可能已遭篡改
什么是明文呢,明文就是未经加密的报文。当然了不是加密了报文信息就不会被看见了,
比如加密后是123,未加密是我爱你。加密后我们看到的就是123。
(1.1)加密
1.如何加密
通信的加密:
HTTP协议是没有加密机制的,但可以通过SSL或者TLS的组合使用来加密HTTP的通信内容。
用SSL建立安全通信线路后,就可以在这条线路上进行HTTP通信了,与HTTP组合使用的
HTTP被称为HTTPS(HTTP Secure,超文本传输安全协议)
内容的加密
只对传输的内容本身加密,这种方式不同于SSL或者TLS将整个通信线路加密处理,‘’
所以内容仍有被篡改的风险。
(1.2)不验证通信方的身份就可能遭遇伪装
也就是说如果对方是伪装成服务器,那么你的信息也许会被窃取。
同理,我们还可以伪装成浏览器去获取服务器的资源。
所以HTTP没办法确认通信方到底是不是我们所想的那个,但是SSL可以,
SSL不仅可以提供加密处理,而且还使用了一种被称为证书的手段用于确定方。
(1.3)HTTP无法证明报文完整性,可能已经遭篡改
比如你在请求或者响应过程中可能会遭遇篡改,导致请求信息或者响应信息前后不一致,
但即使被篡改了,HTTP也没办法确认是否被篡改。这种被篡改的行为叫中间人攻击
(Man-in-the-Middle attack,MITM)
(二)SSL
SSL采用一种叫做公开密钥加密的加密处理方式。
加密和解密同用一个密钥的方式称为共享密钥加密(这个我也不懂,真的,我看到眼睛都花了)
(三)为什么不一直使用HTTPS
HTTPS是安全可靠的,但是与纯文本通信相比,加密通信会消耗更多的CPU及内存资源,
如果每次通信都加密,会消耗掉相当多的资源,平摊到每台计算机上,能够处理的请求数量
必定也会减少。
因此使用HTTPS的时候看情况,一般就用HTTP就好了。
而且要用HTTPS通信就要买证书,这也要钱的。
下一章再讲讲身份认证。