当前位置: 首页 > 科技观察

面试官:说说Cookie和Token的区别?

时间:2023-03-22 16:18:40 科技观察

说到cookie和token,应该没有人不知道,但是如果让大家说说cookie和token是什么关系,你能说出来吗?往往这种看似简单的事情,到了关键的时候,我们很容易陷入尴尬,明明知道是什么,却又解释不清,被pass了就觉得委屈。所以,这篇文章,让我们一起回顾一下cookies相关的基础知识,给自己充电!!!!CookieCookie,有时也用其复数形式Cookies。类型为小型文本文件,是一些网站为了识别用户身份和跟踪会话而存储在用户本地终端的数据(通常是加密的),这些信息被用户的客户端计算机临时或永久保存.看了《百度百科》的概念解释,还是口头上的,我们从原理上来解释一下。为什么会有饼干?通用接口我们都知道,但是数据交换是通过HTTP协议进行的,而HTTP协议的特点是无状态的。工作前通过三次握手建立连接,工作完成后立即挥手四次断开连接。每个连接都是独立存在的,没有状态将请求连接成一个整体,因此每次都需要重新进行身份认证,既消耗性能又为黑客攻击留下隐患。那么Cookie的作用是什么呢?它的出现是为了弥补HTTP的无状态问题。Cookie可以作为状态保存的状态机,保存用户的相关登录状态。当第一次验证通过后,服务端可以使用set-cookie让客户端保存自己的cookie。下次发送请求的时候,直接带上cookie就可以了。当服务端检测到客户端发送的cookie与保存的cookie值一致时,会直接信任该连接,不再进行进一步的认证操作。大体流程如下:TokenToken,token,代表执行某些操作的权利的对象。Token,简单来说就是一种类似于cookies的验证信息。客户端通过登录验证后,服务端会返回一个加密的token给客户端,然后当客户端再次向服务端发起连接时,会带上这个token,服务端直接检查这个token,完成权限检查.为什么有了Cookie还需要Token?cookies作为一种HTTP规范,有着悠久的历史,所以存在一些历史问题,比如跨域限制等,而cookies作为HTTP规范的内容,有默认的存储和默认的发送行为,并且有某些安全问题。与cookie相比,token需要自己存储和发送,没有跨域限制,因此token更加灵活,没有cookie的“历史包袱”,在安全方面可以做更多的优化。Token的传递过程Token的传递过程与Cookie的传递过程类似。校验通过后还是返回,然后保存到客户端。下次再次请求时,会携带验证信息,方便快速验证。如下图所示的Token有哪些优势?从上面对Token和Cookie的分析,我们知道Cookie主要存储一个用户id,因为存储内存空间只有4kb,其他用户信息都存储在服务器的Session中,而Token没有内存限制,用户信息可以存储在Token中返回给用户自行存储。所以可以看出,如果使用cookies,由于所有的用户都需要在服务器的Session中存储相应的用户信息,如果用户数量非常多,这对服务器来说是一个问题。会是一个非常大的性能压力,而Token将用户信息返回给客户端存储,就完全避免了这个问题。总结虽然Token作为一种更现代的存储方式被广泛使用,但Cookie仍然是一种非常重要的验证方式。因此,我们不仅要掌握Token的验证方式,还要掌握Cookie。通过比较这两种方法,我们可以了解它们的区别和优势。缺点,可以让我们更好的理解客户端认证的方式,也可以为我们学习和分析相关的安全问题提供很好的底层原理支持!