cookie/session/jwt的含义及区别


1.什么是cookie ? cookie的特点和应用场景有哪些

cookie如何获取和设置?

首次访问浏览器向服务器端发送请求,server生成cookie信息

把cookie传给client进行保存,

再次访问 浏览器把cookie发送给服务器,保存request对象的cookies

cookie是一种会话追踪技术 有服务器产生将数据信息传递给客户端浏览器的一个键值对

1.cookie是一个标准的键值对 /字典/ 以键值对的方式进行存储,键值都是字符串

2.浏览器访问网站的时候,会将自带的cookie对服务器端进行请求request.COOKIE

3.cookie是基于域名安全的,他需要指定过期时间,否则会在关闭浏览器之后cookie就会失效

4.单个cookie保存的数据不能超过4k 很多浏览器都限制一个站点保存20个cookie

应用场景的话就是 记录用户登陆注册的用户名和密码  安全性要求不高

2.session是什么 特点有哪些 如何设置 并且如何清空

浏览器向服务器端发送请求,服务器就会生成cookie并且设置session信息 sessionid---* session_key / session_data

服务器像浏览器发送session唯一标识符之后向服务器端请求数据就会获取sessionid 根据sessionid的值取出相对应的session信息

request.session属性中请求进行响应

session是服务器端技术保存在服务器端,如果说需要使用提取的话直接从服务器端获取session唯一标识符进行提取session数据和cookie存储

服务器把客户端信息以某种形式保存在服务器上 也就是说将数据保存在session中使用的时候直接根据sessionid提取

如果说客户端浏览器需要使用这个session数据的时候只需要从该sessionid中查找给客户的状态就可以了

1.session是以键值 key value对进行存储的

name:jackson password:19980105

2.session依赖于cookie中如果说客户端请求的时候根据sessionid来进行提取的

唯一的标识码存储在cookie中

3.他也是会有过期时间的如果不指定过期时间默认过期时间是两周

它使用base64加密的

4.应用场景就是 安全性极高的 银行密码以及私密性很强的

cookie和session的相同点和不同点

相同点*

都是存储在服务器端server的

都是以键值对的形式存在的

都是跟踪浏览器用户身份的会话方式

不同点*

cookie是浏览器    不安全的              默认关闭浏览器之后就会失效

session是服务器    安全加密的base64      两周之后会失效

session是依赖cookie的将唯一标识码sessionid存储在cookie中

3.什么是jwt  jwt的特点 以及jwt的工作原理

浏览器访问服务器存储在客户端cookie处理session信息 有唯一标识符sessionid 是由base64加密而成的

jwt json web token  登陆注册访问服务器生成json加密的格式数据  json格式字符串对象形式的安全通信方法

由头部 header / 负载 payload / 签名 sign 三部分组成

jwt的特点是

简洁  可以通过url/post表单提交/文件传输 或者在http  request 等的方式直接将数据传送 ,因为数据量小传输速度快

自包含 负载中包含了所有用户所需信息,避免了多次查询数据库

jwt的工作原理

jwt认证 登陆的时候验证用户名密码是否正确匹配验证通过生成jwt进行保存到本地

跳转到登录页面请求api 过滤器拦截请求验证jwt

如果通过业务逻辑操作并返回数据,在浏览器展示数据

如果是未通过 返回错误信息 提示错误,跳转回登录页面

1.客户端输入正确的用户名密码之后进行post请求ssl加密实现https请求数据

确保数据安全,防止数据泄露

2.服务端接收到信息之后将用户id等其他信息作为jwt payload负载

将其与头部信息进行base64编码拼接之后签名形成jwt

形成的jwt就是一个iii.zzz.www的字符串 ,并设置有效时间

3.服务端将jwt加密字符串作为登陆成功的返回结果传递给客户端

4.客户端将返回的jwt字符串以cookie的形式存储在浏览器端,设置cookie的过期时间

即用户登出的时候客户端删除cookie

5.客户端在每次请求时将jwt放入http header中的authorization

6.服务器接收到jwt之后解密校验 检查签名是否正确 token是否过期 token的接收方是否自己

token就是浏览器中的令牌可以进行网络传输

7.验证通过后服务端使用jwt中包含的用户信息进行逻辑验证,返回相应的结果,否则返回401

4.session和jwt存储id的区别

session存储id  存储在服务器端会占据大量服务器内存较大型应用而言可能还要保存许多状态  以键值对的形式存储 key --- value 和缓存机制来实现session的存储

如果说需要获得客户端存储在session中的数据就要用cookie中的sessionid这个唯一标识符来获取

jwt加密签名验证  存储在客户端  将用户状态分散在客户端 减少服务器查询数据的次数和减轻服务端的内存压力。

除了存储id之外还可以存储是否是管理员和用户所在的组进行验证

jwt会进行加密解密编码 这些压力相对于磁盘来说无关紧要


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容