cookie、session、token傻傻分不清楚

cookie (有状态,保存了用户的状态信息)

  1. 明文形式存储再客户端含用户信息的文件
  2. 每次http请求都会带上cookie
  3. 服务端生成
  4. 不可跨域

cookie生成规则:

在这里插入图片描述

session(cookie升级版,有状态,服务端保存session信息判断用户登录状态)

  1. 服务器生成session信息,会传给客户端一个sessionId
  2. 客户端将sessionId放在cookie中传给服务端
  3. 会失效
  4. 存储内容变小(只存sessionId),提高带宽
  5. 不可跨域
  6. 数据信息需要存储在数据库中

session生成规则:

在这里插入图片描述

token(无状态,服务端不会保存身份认证信息)

  1. 客户端将加密信息(用户名、密码)和签名发送到服务端,服务端将数据加密返回token
  2. 每次http请求,客户端带上token进行解密,判断是否有效
  3. 无状态,服务端不存储token,只需解析token串获取用户信息,减轻查询数据库压力

token生成规则:

在这里插入图片描述

token可以低于csrf攻击,cookie和session不行

csrf攻击:跨站请求伪造,利用用户已经登陆的身份,构建了一个恶意请求。

cookie和session:每次请求浏览器会默认带上,所以每次请求的时候包含了用户信息,可以对伪造的请求进行访问。

token:浏览器不会默认带上

session和token怎么支持分布式

session是有状态的,在分布式情况下需要每台服务器都知道session。

session分布式情况下的常见策略:

  1. session保持:也叫会话保持,保证用户每次请求都打到具体的一台机器
    • 案例:nginx提供了ip_hash。通过请求ip计算出一个hash值,映射到具体的一台服务器上。
  2. session复制:将session复制到所有服务器上。
    • 案例:tomcat基于IP组播完成session复制
  3. session共享:session存数据库。
    • 案例:存储在redis中。

token是无状态的,所以天然的支持分布式。服务端不会存储token信息,服务端通过客户端传来的token进行计算,判断请求是否合法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值