HTTPS
SSL握手和加密原理
HTTPS其实是有两部分组成:HTTP + SSL / TLS,也就是在HTTP上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加密后的数据。具体是如何进行加密,解密,验证的,且看下图。
1.客户端发出请求,明文传输
a.自己支持的一套加密规则
b.一个随机数
2.服务端从客户端发来的加密算法中选择一套,将以下信息发给客户端
a.选出的加密算法
b.服务器生成的随机数
c.网站CA证书
3.客户端本地校验CA证书(通过数字签名)
a.客户端生成一个随机数密码(pre-master-key),并用CA证书里的公钥加密
b.客户端根据两个随机数和随机数密码生成协商密钥
c.生成握手信息,根据协商好的hash计算握手信息,并使用协商密钥和约定好的算法加密
4.客户端将以下信息发给服务器
a.客户端发送给服务端的通知'参数协商完成1'
b.加密后的握手信息
c.CA证书公钥加密后的pre-master-key
5.服务器用CA证书里的私钥解密出pre-master-key
a.服务器用pre-master-key和两个随机数生成协商密钥
b.生成握手信息,根据协商好的hash计算握手信息,并使用协商密钥和约定好的算法加密
6.服务器将以下信息发给客户端
a.加密后的握手信息
b.服务器端发送给客户端的通知'参数协商完成2'
7.客户端拿到握手信息,解密并计算握手消息的hash,并与服务器发来的hash比较,如果一致,握手过程结束
8.握手成功后,以后的每次通信都会通过协商密钥和约定好的算法进行加密
Cookie机制
会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用是Cookie与Session。Cookie通过在客户端记录信息确定用户身份,
Session通过在服务器端记录信息确定用户身份.
为什么需要引入Cookie机制?
1.理论上,一个用户的所有请求操作都应该属于同一个会话
2.HTTP协议是无状态的协议。一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接。这就意味着服务器无法从连接上跟踪会话
3.Cookie可以弥补HTTP协议无状态的不足
什么是Cookie?
1.服务端给客户端们颁发一个通行证吧,每人一个,无论谁访问都必须携带自己通行证。这样服务器就能从通行证上确认客户身份了。这就是Cookie的工作原理
2.Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端颁发一个Cookie。客户端把Cookie保存起来。当客户端再次请求该网站时,把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。服务器还可以根据需要修改Cookie的内容
Cookie特性
1.记录用户访问次数
2.不可跨域名性,示例:浏览器访问Google只会携带Google的Cookie,而不会携带Baidu的Cookie。Google也只能操作Google的Cookie,而不能操作Baidu的Cookie
3.Unicode编码:保存中文只能编码,用UTF-8即可
4.Cookie可以使用存储二进制内容(并不实用)
5.常用属性
6.有效期:maxAge 参见上图
7.修改、删除
a.Cookie并不提供修改、删除操作。如果要修改某个Cookie,只需要新建一个同名的Cookie,添加到response中覆盖原来的Cookie
b.如果要删除某个Cookie,只需要新建一个同名的Cookie,并将maxAge设置为0,并添加到response中覆盖原来的Cookie。注意是0而不是负数
c.注意:修改、删除Cookie时,新建的Cookie除value、maxAge之外的所有属性,例如name、path、domain等,都要与原Cookie完全一样
8.Cookie的安全属性:secure