cookies、session、token区别

灵魂拷问

初级:

  • cookie是什么?cookies其实就是存储在客户端的一组数据。
  • cookies和session区别
  • 什么时候要用到cookie
  • 什么时候不应该用cookie,why?
    • cookie用户可以看到,修改,所以不能存储机密信息,对于安全性高的,不能用cookie
    • 存储大量内容的时候,因为cookie有大小限制

中级:

  • 请求页面如何指定cookie值
  • cookie什么情况下失效?过期了;刷新网页自动删除了;被浏览器禁用了;部分参数有问题导致失效。

高级问题:

  • 客户端禁用了cookies怎么办?
    • HTTP报文
      • 行 url读取sessionid
      • 正文 发送sessionid

cookies和session都是用于身份信息认证的作用。

cookie数据的创建过程

在这里插入图片描述
cookie实现鉴权的原理:
当客户端第一次访问服务器时,那么服务器就会产生cookie,然后通过响应头的方式在Set-cookie中保存,传输到客户端,客户端从第2-N次请求都会自动的带上这些cookie。

特点:

  • 由服务端发出
  • 在客户端存储
  • 客户端在每次请求的时候,都会自动携带

致命弱点:cookie保存在客户端,对于有些敏感信息不安全。

cookie 测试要点:

1、检查cookies是否能正常工作
2、是否按预订的时间进行保存
3、刷新对cookies有什么影响等,例如重新生成cookie
4、禁用或删除cookie是否有友好提示(重新登录等)

浏览器缓存

为了节约网络资源加速浏览,浏览器在用户磁盘上对最近请求过的文档进行存储,当访问者再次请求这个页面时,浏览器就能从本地磁盘显示文档,这样就能加速网页的阅览。

cookie和缓存的区别

1.缓存只是对静态资源的处理;cookie是一种动态机制
2.缓存大小受资源和磁盘空间的限制
cookie本身大小有限制,浏览器限制大小不能超过4kb
缓存不会发送服务器,cookie会与请求一并自动发送
作用不一样。缓存浏览器可以直接从本地磁盘显示文档,加快网页阅览。cookie是服务器辨别用户身份,维护通信传输状态。

session

session 即会话,进行某些获得持续的一段时间。从打开某个网站到关闭浏览器,是一个会话。

session鉴权:
当用户第一次访问服务器的时候,在服务器端保存一个sessionid,这个sessionid是经过加密处理的,然后通过http响应头中的set-cookie发送给客户端保存,以后每次请求服务器的时候只发送sessionid.

服务器创建的session标识是全局唯一的,一串字符
一般存储在服务器内存中
session标识被发往浏览器时,会设置过期时间为1970年1月1日的1秒,表示一个过去式
浏览器拿到session标识后,会临时存储,整个是一个会话cookie,所以浏览器关闭它就消失。

致命弱点:解决了cookie的安全隐患,但是出现了大量客户访问的时候会导致服务器崩溃。

session销毁
session有超时机制,超时系统会自动注销session
session有注销机制,调用invalidate方法注销
通常关闭应用Tomcat,所有的session都会被注销,关闭服务器。

注意:关闭服务器不会注销session哦!

session和cookie实现登陆

当浏览器发送请求时,服务器会自动判断浏览器是否带有sessioinID
若没有session ID,则服务器会生成一个全新的sessionID给浏览器
如果有session ID,则会校验服务器内存是否存在,若不存在,则立马生成一个全新的给它;若存在,则不处理
之后每次请求,都会刷新服务器sessionID的有效期

一般浏览器会将sessionID存到cookie中。若用户主动注销,服务器会同时删除服务端sessionID和客户端cookie

Token

当一个用户登录之后,就给他发送一个token令牌,下一次用户再次请求的时候,只需要带上这个token令牌。服务器通过token令牌验证身份。

Token认证方式与session类似。为了防止客户端伪造session id. token采用时间戳+签名的方式一起作为token发送到服务端,服务端验证签名数据,通过则可访问,否则拒绝请求。

弱点:对于第三方支付,银行,金融等安全要求很高,就出现了通过接口签名解决。

cookie、session、token三种区别

cookie:保存在浏览器中,有大小限制,有状态
session:保存在服务器中,服务器有资源开销,分布式、跨系统不好实现
token:客户端可以将token保存到任何地方,无限制,无状态,利于分布式部署

相同点:都是用于做鉴权的,都是服务器产生的
区别:
1.存放位置不同:session存放于服务器内存;cookies存放于客户端。多大量用户同时访问时,会增大服务器的压力,导致内存溢出。
token存在服务器的文件或数据库,比session更省服务器资源。token只需要在服务器解密即可。
2.安全程度不同:session安全性比cookies高,cookie容易被cookies欺骗
3.数据存储大小不同:cookies一般不超过4kb,session没有限制。
4.会话机制不同:session时一种服务器端机制,通过哈希表的结构来保存信息;cookies是服务器生成的,保存在客户端的一个文本串,会随每个请求一并发送到服务器进行身份验证。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值