Cookie 和 Token 的区别?

9 篇文章 1 订阅
3 篇文章 0 订阅
本文探讨了Cookie和Token在身份验证中的角色。Cookie用于弥补HTTP协议的无状态特性,存储用户登录状态,但存在跨域限制和安全问题。Token作为一种更现代的验证方式,提供更高的灵活性和安全性,解决了Cookie的一些局限。Token和Cookie在验证过程中的作用相似,但Token允许在客户端存储更多用户信息,减轻服务器负载。理解两者差异有助于优化客户端验证策略和提高安全性。
摘要由CSDN通过智能技术生成

在这里插入图片描述
说到 cookie、token 应该没有人不知道的吧,而如果说让大家说出 cookie、token 到底是什么关系,大家能说出来吗,往往这种看似简单的东西,一到关键的场面,就很容易让我们陷入尴尬,明明知道是什么,却解释不清楚,被 Pass 后一脸冤枉,因此,本篇我们就来稍微回顾下 cookie 相关的基础知识,给自己充充电吧!!!!

Cookie
Cookie,有时也用其复数形式 Cookies。类型为小型文本文件,是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息。看完“百度百科”的概念解释,依然是流于文字,我们来从原理方面解释下。

为什么要有 Cookie 呢?
我们都知道一般接口但是通过 HTTP 协议来进行数据交换的,而 HTTP 协议的特点是,无状态,工作前通过三次握手建立连接,工作完成后立刻通过四次挥手断开连接,每次连接都是独立存在的,没有任何状态将请求串联成一个整体,因此每次都需要重新验证是身份,即耗费了性能,也给黑客的攻击留下隐患。

图片

那么 Cookie 的作用是什么呢,它的出现,就是来弥补 HTTP 无状态的问题的,Cookie 可以作为一个状态保存的状态机,用来保存用户的相关登录状态,当第一次验证通过后,服务器可以通过 set-cookie 令客户端将自己的 cookie 保存起来,当下一次再发送请求的时候,直接带上 cookie 即可,而服务器检测到客户端发送的 cookie 与其保存的 cookie 值保持一致时,则直接信任该连接,不再进行验证操作。大致的过程如下图

在这里插入图片描述

Token
Token, 令牌,代表执行某些操作的权利的对象,看了概念的我白了一眼,还是好好介绍一下吧。Token,简单来说,就是类似 cookie 的一种验证信息,客户端通过登录验证后,服务器会返回给客户端一个加密的 token,然后当客户端再次向服务器发起连接时,带上token,服务器直接对token进行校验即可完成权限校验。

有了 Cookie 为什么还需要 Token?
Cookie 作为 HTTP 规范,其出现历史久远,因此存在一些历史遗留问题,比如跨域限制等,并且 Cookie 作为 HTTP 规范中的内容,其存在默认存储以及默认发送的行为,存在一定的安全性问题。相较于 Cookie,token 需要自己存储,自己进行发送,不存在跨域限制,因此 Token 更加的灵活,没有 Cookie 那么多的“历史包袱”束缚,在安全性上也能够做更多的优化。

Token 传递过程
Token 的传递过程和 Cookie 差不多,依然是通过验证后返回,然后存储到客户端,当下一次再次发起请求时,携带该验证信息进行快速验证。如下图

图片

Token 有什么 优势?
从上面对于 Token 和 Cookie 的分析,我们知道了 Cookie 由于存储的内存空间只有 4kb,因此存储的主要是一个用户 id,其他的用户信息都存储在服务器的 Session 中,而 Token 没有内存限制,用户信息可以存储 Token 中,返回给用户自行存储,因此可以看出,采用 Cookie 的话,由于所有用户都需要在服务器的 Session 中存储相对应的用户信息,所以如果用户量非常大,这对于服务器来说,将是非常大的性能压力,而Token 将用户信息返回给客户端各自存储,也就完全避开这个问题了。

总结
虽然 Token 作为更加现代的存储方式被广泛采用,但是 Cookie 仍然是非常重要的验证方式,因此,我们不仅需要掌握 Token 的验证方式,也需要掌握 Cookie ,通过对比两种方式,了解其差异和优缺点,我们才能够更好地理解客户端验证的方式,也能够为我们学习和分析相关安全问题提供很好的底层原理支撑!
推荐阅读
2022年最强,最骚,最简化八股文一篇吃到饱
图片在这里插入图片描述

Session、CookieToken是常用于Web应用中的身份验证和状态管理的机制,它们有以下区别: 1. Session(会话):Session是一种服务器端的状态管理机制。当用户第一次访问网站时,服务器会为该用户创建一个唯一的Session ID,并将该ID存储在Cookie中发送给客户端。客户端在后续的请求中通过Cookie中的Session ID来标识自己。服务器根据Session ID来查找对应的会话数据,从而实现用户状态的管理。 2. Cookie(HTTP Cookie):Cookie是一种客户端的状态管理机制。服务器在响应中通过Set-Cookie头部将一些数据存储在客户端,客户端在后续的请求中通过Cookie头部将这些数据发送给服务器。服务器根据Cookie中的数据来识别用户并进行相应的处理。 3. Token(令牌):Token是一种无的身份验证机制。当用户登录成功后,服务器会一个Token并返回给客户端。客户端在后续的请求中通过在请求头或参数中携带Token来进行身份验证。服务器通过验证Token的有效性来确定用户身份。 区别: - 存储位置:Session和Token存储在服务器端,而Cookie存储在客户端。 - 数据安全性:Token相对较安全,因为它可以使用加密算法进行签名和验证;而Cookie可以被窃取或篡改。 - 扩展性:Token可以用于多个应用程序,而Cookie只能在同一域名下共享。 - 状态管理:Session和Cookie可以用于管理用户的状态信息,而Token主要用于身份验证。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值