HTTP
HTTP是基于TCP协议的一个无状态协议。
缺点
1.使用明文进行传输,内容可能被窃听
TCP/IP协议族的工做机制,通讯内容在全部的通讯线路上均可能遭到窥视
2.不验证通讯方的身份,通讯方的身份多是假装
在http协议中的请求和响应不会对通讯方进行确认,任何人均可以发起请求,另外服务器只须要接受到请求,无论对方是谁都会返回一个响应。(对方的IP和端口没有被WEB服务器设定限制访问的状况下)
隐患:
1.可能将响应信息发送到假装客户端上
2.有可能请求到假装的服务器
3.没法肯定对方是否具备访问权限
4.即便是无心义的请求也照单全收,没法阻止海量请求下的DOS攻击
5.没法证实报文的完整性,报文可能被篡改
HTTP自己不具备保存以前发送请求和响应的功能,使用HTTP协议,每当有新的请求发生,就会有对应的新响应产生,协议不保存请求或响应报文的信息,这是为了更快的处理业务,确保协议的可伸缩性,而特地把HTTP设置的如此简单。
持久链接
低版本的TCP每次请求都会断开链接,为了解决这个问题,HTTP/1.1想出了持久链接的办法,持久链接的特色是,只要任意一端没有明确提出断开链接,则保持TCP链接状态。
管线化
持久链接使得多数请求得以管线化,从前发送请求后需等待并收到响应,才能发送下一个请求,管线化出现后,不用等待响应亦可发送下一请求。
SSL
虽然HTTP没法确认通讯方,可是使用SSL能够,SSL不只提供加密处理,并且还使用了一种被称为证书的手段,可用于肯定通讯方。
SSL采用一种叫作公开密钥加密的加密处理方式,公开密钥加密使用一对非对称的密钥,一把叫作私有密钥,另外一把叫作公开密钥,私有密钥不能让其余任何人知道,而公开密钥能够随意发布,任何人都能得到。
使用公开密钥加密方式,发送密钥的一方使用对方的公开密钥进行加密处理,对方收到保密信息后,再使用本身的私有密钥进行解密,利用这种方式,不须要发送用来解密的私有密钥,也没必要担忧密钥被攻击者窃听盗走。
HTTPS
HTTP没有加密机制,可是能够经过SSL(安全套接层)或TLS(安全层传输协议)的组合使用,加密HTTP通讯内容。
HTTPS不是一个新协议,是由HTTP先和SSL/TSL,再由SSL/TSL和TCP通讯,也就是说HTTPS使用了一个相似隧道的安全协议层进行通讯。只是HTTP接口部分用SSL和TSL协议代替
在SSL创建安全通讯线路以后,就能够在这条线路上进行HTTP通讯了,与SSL组合使用的HTTP被称为HTTPS
为何不直接对 HTTP 报文进行加密,而是多加一层 SSL/TLS 呢?由于 HTTP 报文分为报文首部和报文主体,若是只对发送内容进行加密(也就是报文主体),而未加密的报文首部信息也会致使信息不安全。
为何https安全;
它使用了ssl/tls协议传输,包含证书、卸载、流量转发、负载均衡、页面适配等,保障了传输的安全性
对称加密
简单来讲,就是加密和解密都是经过用一个密钥。
好比我要传输的明文是 5201314,我在传输前将明文的全部数字+1,获得:6302425,而后接收方根据相同的密钥将密文进行解密,获得明文。
通常的对称加密算法是使用 XOR(异或) 这个特色,例如:
var a = 5201314 // 明文 var b = 123456 // 密钥 var c = a ^ b // 加密 var d = c ^ b // 解密 => 5201314
HTTPS防劫持
网站实现Https访问能有效避免流量劫持,但前提是必须用受信任SSL证书。不一样于简单的Http代理,HTTPS 服务须要权威CA机构(如 沃通CA )颁发的SSL证书才算有效。自签证书浏览器不认,并且会给予严重的警告提示。而遇到“此网站安全证书存在问题”的警告时,大多用户不明白是什么状况,就点了继续,致使容许了不发份子的伪证书,不受信任的HTTPS 流量所以遭到劫持。
Https是颇有效的流量劫持防范措施,不管是网络服务提供商仍是广大网民,为本身的账户安全和权益,都要造成使用https访问网站的习惯和意识,重要的网站必须部署SSL证书实现HTTPS 加密访问。要得到SSL证书,能够 沃通CA 机构去申请,能够选择免费SSL证书或者付费SSL证书。
HTTPS采用混合加密机制
HTTPS采用共享密钥加密和公开密钥加密二者并用的混合加密机制。