cookie,session与token的真正区别你真的了解了吗??

cookie,session与token的真正区别你真的了解了吗??
收藏者
0
被浏览
732

3 个回答

wangqua8 LV

发表于 5 小时前

Cookie 就像是商家给你的一张小纸条 。当你第一次去一家商店时 ,商家给你这张小纸条 ,上面记录了一些关于你的简单信息 ,比如你喜欢的商品类型 。之后你每次再去这家商店 ,商家就能通过这张小纸条认出你 ,给你提供一些个性化服务 。它存放在你的浏览器里 ,每次向服务器发送请求时 ,浏览器都会带着它 。不过它不太安全 ,别人有可能看到里面的内容 。

Session 好比是商店的一个账本 。当你进入商店 ,商店会在账本上给你开一个户头 ,记录你的一些行为和信息 ,比如你挑选了哪些商品 。这个账本在商店(服务器)那边 ,你看不到 。商家通过一个特殊标识(类似于身份证号 ,和你浏览器里的某个东西对应)来识别你 ,这样不管你在商店里从这个区域走到那个区域 ,商家都知道是你 。相比Cookie ,它更安全 ,因为信息存放在服务器端 。

Token 则像是一把临时钥匙 。当你登录某个系统时 ,系统会给你一把特殊的钥匙 。你拿着这把钥匙去访问系统里需要权限的地方 ,系统看到这把钥匙 ,就知道你是被允许进来的 。它和 Session 类似 ,也是用于标识用户身份 ,但 Token 更灵活 ,可以跨平台 、跨系统使用 。比如你在手机上登录一个应用得到的 Token ,在电脑上登录同一个账号时也能使用 ,而且它一般有有效期 ,过了时间就失效了 。  

ldf007 LV

发表于 7 小时前

Cookie、Session与Token有明显区别。

Cookie是在客户端存储数据的机制,由服务器发送到用户浏览器并保存在本地,下次向同一服务器再发起请求时,浏览器会携带这些Cookie信息。它可以在浏览器下次请求时被服务器读取,方便服务器识别用户相关信息,但存在安全风险,因为它存储在客户端,可能被篡改或窃取。

Session是服务器端用于跟踪用户会话的机制。服务器为每个会话创建一个唯一的标识符,当用户首次访问服务器时,服务器会创建一个Session,并将其相关的标识符通过Cookie发送给客户端。后续客户端的请求都会携带这个标识符,服务器通过它来识别用户的会话状态,进而在服务器端存储和管理与该用户会话相关的数据。

Token是一种身份验证机制。它是一个字符串,通常由服务器在用户登录成功后生成并返回给客户端。客户端在后续请求中携带这个Token,服务器通过验证Token的有效性来确定请求者的身份。Token可以跨域使用,适用于前后端分离的架构。与Cookie和Session不同,Token的验证主要基于其自身携带的信息和签名,而不是依赖于服务器端的会话状态存储。

总的来说,Cookie侧重于客户端数据存储,Session主要用于服务器端跟踪用户会话,Token则专注于身份验证,用于在不同系统间安全地传递身份标识 。  

shadowdow LV

发表于 8 小时前

Cookie、Session与Token是在Web开发中用于管理用户状态和身份验证的重要机制 ,它们之间存在明显区别。

Cookie是存储在客户端浏览器中的小段数据。当用户访问网站时,服务器可以向浏览器发送Cookie,浏览器会将其存储下来。下次用户再次访问同一网站时,浏览器会自动将相应的Cookie发送回服务器。Cookie的作用主要是在客户端存储一些用户相关的信息,比如用户的登录状态、用户设置等。它的优点是使用方便,不需要服务器额外维护太多状态。然而,Cookie也存在安全风险,因为它存储在客户端,容易被篡改或窃取,比如通过XSS攻击获取用户Cookie。而且由于每次请求都会携带Cookie,可能会增加请求的大小,影响性能。

Session则是服务器端的会话机制。服务器为每个用户创建一个唯一的会话标识,当用户首次访问网站时,服务器生成一个Session ID,并将其通过Cookie发送给客户端。客户端在后续的请求中会携带这个Session ID,服务器通过这个ID来识别用户的会话状态。Session的优点在于它存储在服务器端,相对安全,服务器可以更好地控制和管理用户的会话状态。例如可以方便地实现用户的登录验证、购物车等功能。但缺点是服务器需要额外维护会话数据,占用服务器资源,如果用户量很大,对服务器性能会有一定影响。

Token是一种身份验证机制。它是一个字符串,通常由服务器生成并发放给客户端。客户端在后续请求中携带这个Token,服务器通过验证Token的有效性来确定用户身份。Token的优势在于它是无状态的,服务器不需要存储关于Token的额外信息,减轻了服务器的负担,也更易于在分布式系统中实现。同时,Token可以通过多种方式进行加密和签名,提高安全性。比如JSON Web Token(JWT),它包含了用户信息和签名,服务器可以通过验证签名来确保Token未被篡改。与Cookie和Session相比,Token更适合于移动应用和跨域的场景。

综上所述,Cookie侧重于在客户端存储数据,使用简单但存在安全风险;Session在服务器端管理用户会话,相对安全但占用服务器资源;Token无状态、安全且适用于分布式系统和移动应用等场景。开发人员需要根据具体的应用需求和安全要求,合理选择使用这些机制。  

您需要登录后才可以回帖 登录 | 立即注册