- 为什么需要
session
和cookie
session
和cookie
的特点session
和cookie
的实现原理详解session
为什么比cookie
安全- 接口如何处理
session
和cookie
session
和cookie
的特点
session
和cookie
都是由服务器生成的- 都是键值对应的,用来存储特定的业务的值
cookie
会返回给客户端,由客户端自己保存session
会存储在服务器端,但sessionID
(是服务器端用来存储session值的对象的ID/识别码
,不是session值
)会通过cookie
的形式(set-cookie
响应头)返回给客户端。session
和cookie
都是有其生命周期的
客户端在发送请求的时候,会自动给将客户端所持有的、存活的cookie
封装在请求头中一起发送给服务器。cookie
生命周期:一般受2个因素的影响
(客户端自身是否保存cookie
只对客户端自身有影响,对于其他工具没有影响)- 服务器生成
cookie
时所指定的存活周期 - 客户端自己是否保存
cookie
- 服务器生成
session
生命周期:一般受2个因素的影响
(客户端进程关闭只对客户端自身有影响,对于其他工具没有影响)- 服务器对于
session
对象的存活设置 - 客户端进程是否关闭
- 服务器对于
session
和cookie
都有其作用域
- 为什么session比cookie安全?
- 因为cookie直接将cookie值返回给客户端,由客户端自行保存。对于客户来说,cookie是可见的,具有破解的可能性。
- session存储于服务器,客户端拿到的仅是一个无意义的随机的sessionID值,用户根据sessionID无法知道服务器如何进行数据的校验,校验逻辑也是不可推测的。
- 应用:
- 在功能测试中,要求敏感的数据不通过cookie实现状态记录,安全级别高的业务也不能通过cookie实现状态记录。
- 状态记录的原理
- 状态记录一定和两个请求有关
- 请求A:用来获取状态,所谓状态就是一段由服务器生成的数据。
- 服务器返回状态值的方式,常见的有:
- session
- cookie
- token
- Basic Authourization
- 表单数据,body中的某个数据
- 服务器返回状态值的方式,常见的有:
- 请求B:会提交状态数据,服务器端收到请求B之后,会对状态数据进行校验。
- 请求A:用来获取状态,所谓状态就是一段由服务器生成的数据。
- 状态记录一定和两个请求有关