Sessionid和Token的区别

原文链接1:https://blog.csdn.net/qq_1290259791/article/details/81193914
原文链接2:https://blog.csdn.net/qq_1290259791/article/details/80947237
cookie 和 session的区别
一、cookie
http请求时无状态的。就是说第一次和服务器连接并登陆成功后,第二次请求服务器仍然不知道当前请求的用户。
cookie出现就是解决了这个问题,第一次登陆后服务器返回一些数据(cookie)给浏览器,然后浏览器保存在本地,当用户第二次返回请求的时候,就会把上次请求存储的cookie数据自动携带给服务器。
如果关闭浏览器cookie失效(cookie就是保存在内存中)
如果关闭浏览器cookie不失效(cookie保存在磁盘中)

二、session
session和cookie的作用有点类似,都是为了存储用户相关的信息。不同的是,cookie是存储在本地浏览器,而session存储在服务器。存储在服务器的数据会更加的安全,不容易被窃取。但存储在服务器也有一定的弊端,就是会占用服务器的资源。

1、存储在服务端:通过cookie存储一个session_id,然后具体的数据则是保存在session中。如果用户已经登录,则服务器会在cookie中保存一个session_id,下次再次请求的时候,会把该session_id携带上来,服务器根据session_id在session库中获取用户的session数据。就能知道该用户到底是谁,以及之前保存的一些状态信息。
2、将session数据加密,然后存储在cookie中。这种专业术语叫做client side session。flask采用的就是这种方式,但是也可以替换成其他形式。

cookie和session的区别

  1. cookie数据存放在客户的浏览器上,session数据放在服务器上。
  2. cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗考虑到安全应当使用session。
  3. session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能考虑到减轻服务器性能方面,应当使用COOKIE。
  4. 单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。因此使用cookie只能存储一些小量的数据。
  5. 所以个人建议:
    将登陆信息等重要信息存放为SESSION
    其他信息如果需要保留,可以放在COOKIE中

Cookie和Session的方案虽然分别属于客户端和服务端,但是服务端的session的实现对客户端的cookie有依赖关系的,上面我讲到服务端执行session机制时候会生成session的id值,这个id值会发送给客户端,客户端每次请求都会把这个id值放到http请求的头部发送给服务端,而这个id值在客户端会保存下来,保存的容器就是cookie,因此当我们完全禁掉浏览器的cookie的时候,服务端的session也会不能正常使用。

1.session出现的原因
因为http协议本身是无状态的,这样你本次请求和上次请求无法判断是不是同一个人操作的。
2.session的生成方式
浏览器在第一次访问服务器时,服务器会创建一个session,然后同时为该session生成一个唯一的会话sessionid。然后将sessionid和session存储到缓存/数据库中,然后服务器再把sessionid(名字为JSESSIONID的cookie),以cookie形式发送给客户端。
浏览器再次访问时会携带cookie中的sessionis,然后服务器根据sessionid找到对应的session进行匹配。
如果浏览器禁用了cookie/不支持cookie,可以通过URL重写的方式发送到服务。

session会话机制
session会话机制

3.token出现的原因
session的存储是需要空间的,session的传输一般都是通过cookie来传输,或url重写的方式。
token在服务器时可以不用存储用户信息的,token传递的方式也不限于cookie传递,token也可以保存起来。
4.token的生成方式
浏览器第一次访问服务器时,会传过来一个唯一表示ID,服务端通过算法,加密钥,生成一个token。通过BASE64编码后将token发送给客户端。
客户端将token保存起来,下次请求带着token,服务器收到请求会用相同的算法取验证toekn,如果通过就继续执行。
token组成:uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名,由token的前几位+盐以哈希算法压缩成一定长的十六进制字符串,可以防止恶意第三方拼接token请求服务器)。还可以把不变的参数也放进token,避免多次查库

token认证机制:
token认证机制

5.token和session的区别
共同点:都是保存了用户身份信息,都有过期时间。

  1. session翻译为会话,token翻译为令牌。
  2. session是空间换时间,token是时间换空间
  3. session和sessionid:服务器会保存一份,可能保存到缓存/数据库/文件。
  4. token:服务器不需要记录任何东西,每次都是一个无状态的请求,每次都是通过解密来验证是否合法。 token 只是一个 key,不存放实际的数据,与这个 token 相关的数据还是存放在服务器上,例如 Session,Redis 等分布式缓存里,用 token 去请求对应的数据。
  5. sessionid:一般是随机字符串,要到服务器检索id的有效性。出现请求:服务器重启饿内存中的session没了,数据库服务器挂了。
  6. token 和 cookie 本质上没啥区别,只不过 token 只是一个字符串,访问的时候可以放在 url 的参数,header 里等,不像 cookie 那么重量级,而且移动端访问的时候 token 更方便,仅此而已。
  • 10
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: sessionidtoken区别在于: 1. sessionid是服务器用来标识用户会话的一种机制,通常存储在cookie中,用于在用户访问不同页面时保持用户的登录状态。而token是一种用于身份验证和授权的令牌,通常由服务器生成并返回给客户端,客户端在后续请求中携带该令牌以证明自己的身份。 2. sessionid通常是由服务器生成的唯一标识符,用于标识用户的会话信息,包括用户的登录状态、购物车信息等。而token通常是由服务器生成的一段随机字符串,用于验证用户的身份和授权访问某些资源。 3. sessionid通常存储在cookie中,可以在客户端和服务器之间传递,但存在cookie被篡改的风险。而token通常存储在客户端的本地存储或浏览器的cookie中,可以在客户端和服务器之间传递,但相对于sessionid更加安全,因为token可以使用加密算法进行加密和解密,从而防止被篡改。 总之,sessionidtoken都是用于标识用户身份和会话信息的机制,但它们的实现方式和使用场景有所不同。在实际应用中,需要根据具体的需求选择合适的机制来保证用户的安全和隐私。 ### 回答2: SessionIDToken是Web开发中经常用到的两个概念,它们都是用来识别用户身份和维护用户状态的方式,在很多场景中我们都可以使用其中的一个或者两者结合使用。下面我将会从SessionIDToken的定义、特点和应用场景等几个方面来探讨它们之间的区别。 一、定义 SessionID,指会话ID,是服务器为了追踪用户状态而创建的一种机制,通常是一串唯一的标识符,可以存在于cookie、URL、表单隐藏元素等中。 Token,指令牌,是指用户身份验证上下文中使用的一种凭据,通常是由服务器生成的一段随机字符,通过它能够有效防止信息被篡改或者伪造。 二、特点 SessionID: 1.每个会话都有一个唯一ID,可以用于标识该会话的状态。 2.SessionID通常存储在cookie中,并随着请求一起发送到服务器。 3.由于SessionID存储在cookie中,所以存在cookie被禁用的情况下无法使用。 4.可以记录用户的状态信息,如登录状态、购物车等。 5.用户退出登录后,SessionID也会失效,并被服务器删除。 Token: 1.服务器生成Token并返回给客户端,客户端需要保存起来。 2.Token通常存储在HTTP Header或请求参数中。 3.由于Token不依赖Cookie,所以可以避免被禁用的情况。 4.可以记录用户的权限信息和登录状态。 5.客户端可以手动销毁Token。 三、应用场景 SessionID: 1.用于维护用户登录状态,避免登录后重复输入账号密码。 2.用于存储用户信息和订单信息等。 3.多用于业务场景较为简单、单一的应用。 Token: 1.为API接口鉴权提供支持。 2.用于维护浏览器与服务端的状态,如OAuth的授权过程。 3.多用于业务场景较为复杂、多样的应用。 总体来说,SessionIDToken都是用来识别用户和维护状态的方式,它们各自有其特点和应用场景。SessionID适用于简单、单一的业务场景,而Token则更适合于复杂、多样化的应用。根据实际情况选择使用哪种方式或者两者结合使用都是可以的。 ### 回答3: Session ID和Token都是身份验证和安全管理中常用的概念。 Session ID(会话标识符)是在服务器端生成的一段随机字符串。当用户第一次访问服务器时,服务器会创建该用户的一个session,并为该session生成一个唯一的session ID,该session ID会被存储在用户设备本地的cookie当中,用于在用户的后续请求中进行验证。服务器端通过session ID可以获取到用户的身份信息,从而进行相关的处理。Session ID的安全性取决于服务器生成的随机字符串的随机性和长度。 Token(令牌)通常是指一段由服务器生成的字符串,用于标识某个用户或某个操作的合法性。具体用法根据不同的情况而异。在某些场景下,Token需要在服务器端进行多次的验证,并随着后续操作的完成而失效;在另一些场景下,Token只需要在一次验证之后就可以使用,并且在过期之前一直有效。Token的安全性取决于其生成算法的安全性和密钥的保护程度。 Session ID和Token的使用场景不同。Session ID常用于Web应用程序中,在用户登录后,Web服务器会为用户生成一个session ID,并将其返回给浏览器保存在本地cookie中。该session ID可以用于识别用户,验证用户的身份,并存储用户的相关信息,如购物车、浏览记录等。而Token通常用于API调用认证中,API调用需要通过在HTTP请求头中携带Token来证明请求的合法性。Token可以有效地防止CSRF攻击,还可以提高服务器端的性能和可伸缩性。 综上所述,Session ID和Token都是用于身份验证和安全管理的重要概念,其区别在于用途和使用方式的不同。Session ID通常用于Web应用程序中,而Token则用于API调用认证等场景中。除此之外,Session ID的安全性取决于随机字符串的随机性和长度,而Token的安全性取决于其生成算法的安全性和密钥的保护程度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值