Cookie Seesion Token

本文探讨了Cookie在保持用户状态、Session的工作原理及其与Cookie的区别,以及Token在身份验证中的应用,强调了它们在安全性上的优劣和适用场景。
摘要由CSDN通过智能技术生成

Cookie Seesion Token

Session

Session 的主要作用就是通过服务端记录用户的状态(通过 Cookie 中附加一个 Session ID 的方式来跟踪)

基本概念

Cookie 是一种在客户端存储数据的技术,它是由服务器发送给客户端的小型文本文件,存储在客户端的浏览器中,大小大概 4KB。在客户端发送请求时,浏览器会自动将相应的 Cookie 信息发送给服务器,服务器通过读取 Cookie 信息,就可以判断该请求来自哪个客户端。

cookie 中通常存储的数据:用户登录信息;用户行为等

  • 身份验证令牌
  • 用户首选项:语言选择、主题偏好
  • 跟踪用户行为:页面浏览历史、购物车内容
  • 会话信息:处理会话级别的数据,如保存用户在填写表单时的临时信息。
Cookie 的实现用户确定或者权限确定的流程

1、客户端发送请求到服务器

2、服务器收到请求后生成一个 session 会话

3、服务端响应客户端,并在响应头中设置 Set-Cookie。Set-Cookie 里面包含了 sessionId,它的格式 Set-Cookie: value[; expires=date][; domain=domain][; path=path][; secure]。其中 sessionId 就是用来标志客户端的。

4、客户端收到该请求后,如果服务器给了 Set-Cookie,那么下次浏览器就会在请求头中自动携带 cookie

5、客户端发送其它请求,自动携带了 cookie,cookie 中携带有用户携带 cookie

6、服务端接收到请求,验证 cookie 信息。例如通过 sessionId 来判断是否存在会话,存在则正常响应。

cookie 主要特点
  1. cookie 存储在客户端
  2. cookie 不可跨域,但是如果设置了 domain,那么它们是可以在一级域名和二级域名之间共享的。
Cookie 被禁用怎么办

最常用的方法就是利用 URL 重写把 Session ID 直接附加在 URL 路径的后面

Session
基本概念

session 由服务端创建,当一个请求发送到服务端时,服务器会检索该请求里面有没有包含 sessionId 标识,包含则代表服务端已经和客户端创建过 session,然后就可以通过这个sessionId 查找对应的 session;没有找到的话就会为和客户端创建一个新的session,并生成一个新的与之对应的 sessionId,在响应时将 sessionId 给客户端,通常是存储在 cookie 中。

每一个客户端与服务端连接,服务端都会为该客户端创建一个 session,并将其唯一标识 sessionId 通过设置 Set-Cookie 头的方式相应给客户端,客户端将其存到 cookie 中。

session 与 Cookie 的实现用户确定或者权限确定的流程

通常情况,cookie 与 session 结合使用,也可以分别单独使用,这里是结合的流程:

1、客户端发送请求

2、服务端收到请求后,创建一个 session,并将 session 的唯一标识 sessionId 设置在 Set-Cookie 响应头中,相应给客户端

3、客户端收到响应后。发送其他请求会自动携带 cookie,服务端通过 sessionId 找到 session,没找到则重新创建 session

4、服务端 cookie 验证通过正常响应请求

session 和 cookie 的区别与联系

联系:cookie 和 session,它们两者之间主要是通过 sessionId 关联起来的;session 基于 cookie 实现的

区别:

  • session 比 cookie 更加安全,因为 session 存在于服务端,cookie 存在于客户端
  • cookie 只支持存储字符串数据,session 可以存储任意数据
  • cookie 有效期可以设置较长时间,session 有效期都比较短
  • session 存储空间很大,cookie 有限制

所以一般建议一起使用噢!!!

token
基本概念

Token 是一个由一串字符组成的令牌,用于在计算机系统中进行身份验证和授权;是一种在客户端和服务端之间传递身份信息的方式。当用户登录成功后,服务端会生成一个 Token,将其发送给客户端。客户端在后续请求中,就可以确定该请求来自哪个用户,并且可以根据用户的权限进行相应的操作。

Token 的组成

  • 标头 Header:包含了算法和类型,用于指定如何对有效载荷进行编码和签名。采用算法SHA、HMAC、RSA等。
  • 有效载荷 Payload:包含一些用于验证身份和授权,如身份ID、角色、权限等。有效载荷可以是加密的,也可以是明文的
  • 签名 Signature:是对标头和有效载荷进行签名后得到的值,用于验证 token 的完整性和真实性。签名通常使用私钥进行签名,并使用公钥进行验证。
Token 认证流程
  1. 客户端发起请求
  2. 服务端校验用户名和密码后,将用户ID 和一些其它信息进行加密,生成 token,然后服务端将 token 响应给客户端
  3. 客户端收到响应后将 Token 存储下来,下一次发送请求后需要将 token 携带上
  4. 服务端收到 token 后校验,校验通过则正常返回数据
优势:

Token 有效避免了 Cookie 的一些安全问题。如 CSRF 攻击。

对比

在这里插入图片描述

总结:session 是空间换时间,token 是时间换空间

本文参考 by 知乎https://zhuanlan.zhihu.com/p/631349844

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值