一.https
http有以下安全问题
1.使用明文进行通信,内容可能被窃听。
2.不验证通讯方的身份,通讯方的身份有可能是伪装的。
3.无法证明报文的完整性,报文有可能被篡改。
(1)HTTPS 并不是新协议,而是让 HTTP 先和 SSL(Secure Sockets Layer)通信,再由 SSL 和 TCP 通信,也就是说 HTTPS 使用了隧道进行通信。通过使用 SSL,HTTPS 具有了加密(防窃听)、认证(防伪装)和完整性保护(防篡改)。
HTTPS 采用混合的加密机制,使用非对称密钥加密用于传输对称密钥来保证传输过程的安全性,之后使用对称密钥加密进行通信来保证通信过程的效率
(2)通过使用 证书 来对通信方进行认证。
数字证书认证机构(CA,Certificate Authority)是客户端与服务器双方都可信赖的第三方机构。
服务器的运营人员向 CA 提出公开密钥的申请,CA 在判明提出申请者的身份之后,会对已申请的公开密钥做数字签名,然后分配这个已签名的公开密钥,并将该公开密钥放入公开密钥证书后绑定在一起。
进行 HTTPS 通信时,服务器会把证书发送给客户端。客户端取得其中的公开密钥之后,先使用数字签名进行验证,如果验证通过,就可以开始通信了。
(3)SSL 提供报文摘要功能来进行完整性保护。
HTTP 也提供了 MD5 报文摘要功能,但不是安全的。例如报文内容被篡改之后,同时重新计算 MD5 的值,通信接收方是 无法意识到发生了篡改。
HTTPS 的报文摘要功能之所以安全,是因为它结合了加密和认证这两个操作。试想一下,加密之后的报文,遭到篡改之后,也很难重新计算报文摘要,因为无法轻易获取明文。
二.http/2.0
http/1.x实现简单是以牺牲性能为代价的
1.客户端需要使用多个连接才能实现并发和缩短延迟。
2.不会压缩请求和响应首部,从而导致不必要的网络流量。
3.不支持有效的资源优先级,致使底层的TCP连接利用率低下。
三.get和post比较
1.get用于获取资源,post用于传输实体主体。
2.get是安全的,post不是。
3.正常实现的条件下,get方法是幂等的,而post方法不是。