【信息安全】-认证机制中的session和token

密码和证书等常见的身份认证手段仅仅用于登录系统时,当登录完成之后,不可能每次请求都去验证密码和账号,所以登陆成功之后需要有一个对用户透明的机制来进行验证,那就是session(同时session也要有保存用户状态的一个作用)

cookie-session机制

原理

  • 第一次访问
    • 如果以前从来没有登录过某个网站,http头部中不会携带cookie。浏览器为登录后的用户生成一个session-id,并返回给浏览器,浏览器将这个session-id保存在客户端。
  • 后序访问
    • 访问时会在自己的cookie中携带服务器给分配的session-id,服务器收到后根据这个session-id在自己的缓存中索引用户信息,并将保存的用户数据返回给客户端。
  • 很久后的访问
    • cookie是有失效的,很久之后再次访问会重新生成性的session-id使原来的session-id失效。

sessionID最常见的做法是保存在cookie中,除此之外还可以保存在URL中,不过这样不是很安全,目前很多的手机浏览器都不支持cookie,在这种情况下只能保存在URL中。

弊端

  • 服务器压力增大:通常session是存储在内存中的,每个用户通过认证之后都会将session数据保存在服务器的内存中,而当用户量增大时,服务器的压力增大。

有一种解决办法是把session放在cookie中加密好,当浏览器访问网页时,带上这个cookie,服务器端只要解密就可以得到用户的session。

  • CSRF跨站伪造请求攻击:session是基于cookie进行用户识别的, cookie如果被截获,用户就会很容易受到跨站请求伪造的攻击,cookie劫持https://blog.csdn.net/qq_39328436/article/details/114262076

  • 扩展性不强:如果将来搭建了多个服务器,虽然每个服务器都执行的是同样的业务逻辑,但是session数据是保存在内存中的(不是共享的),用户第一次访问的是服务器1,当用户再次请求时可能访问的是另外一台服务器2,服务器2获取不到session信息,就判定用户没有登陆过。

token机制

在cookie-session机制中,最大的弊端就是服务器要存储session,token主要就是用来缓解这个矛盾的。

原理

客户端在第一次访问时,服务器给客户端颁发一个令牌(token),下次客户端再次访问时,携带着这个令牌,便完成了一次身份认证。

令牌颁发
令牌校验

token验证的过程:

  • 客户端使用用户名跟密码请求登录
  • 服务端收到请求,去验证用户名与密码
  • 验证成功后,服务端会签发一个 Token,再把这个 Token 发送给客户端
  • 客户端收到 Token 以后可以把它存储起来,比如放在 Cookie 里或者 Local Storage 里
  • 客户端每次向服务端请求资源的时候需要带着服务端签发的 Token
  • 服务端收到请求,然后去验证客户端请求里面带着的 Token,如果验证成功,就向客户端返回请求的数据

session VS token

1.session保存在服务器端,导致服务器压力增大,不利于服务器扩展。token保存在客户端,服务器用计算时间换取了存储空间。

2.token更加安全,请求中发送token而不再是发送cookie能够防止CSRF(跨站请求伪造),因为token会被拼接在url中,难以伪造。

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
A:在Web开发,cookie、sessiontoken都用于身份认证和保持用户状态,但它们的实现方式和具体用途不同。 1. cookie(HTTP cookie):是一种在客户端保存数据的机制,当用户访问网站时,服务器可以把需要保存的数据通过Set-Cookie响应头发送给客户端,浏览器会自动把这些数据保存在本地,之后每次请求时会把这些数据通过Cookie请求头发送给服务器。cookie本质上是一组键值对,可以保存一些用户登录状态、偏好设置等信息。 2. session:与cookie类似,也是一种保持用户状态的机制,但它的实现方式不同。session是在服务器端创建的,客户端通过一个session ID与服务端进行交互,服务端维护着session数据。通常情况下,session ID会保存在cookie或者URL参数Session通过在服务器端保存用户登录状态可以提高安全性,因为Cookie可能被第三方截获。 3. tokentoken是一种在客户端和服务端之间传递认证信息的机制,一般是由服务端签发的,包含了一些认证信息和有效期等内容。客户端在登录成功后,服务端会返回一个token给客户端,在后续的请求,客户端需要携带该token才能进行认证token可以放在请求头、Cookie、URL参数等位置,具有跨域、跨平台等优势。相比于使用session使用token能够将负载更多地分散到客户端。 总结:cookie是在客户端保存数据、session是在服务器端保存会话状态、token是一种通过客户端和服务器之间交互的证明身份机制。而且,它们在功能和使用方式上都存在着不同。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

vector<>

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值