token以及session

本篇文章会主要讲解一下token以及session的验证过程,以及cookie的安全问题,以及在实际开发中如何使用,其实这算是老生常谈了,但是我也是吧这篇文章写出来做一个梳理,总结吧,希望你们也能从这篇文章中获益。

一、session验证过程

客户端向服务端发送请求(携带相关数据),服务端把相应的数据存储在服务端中,并给客户端返回一个sessionid,当下一次用户再次请求的时候,会在cookie中携带sessionid,服务端验证进行校验,辨别用户并验证sessionid是否过期,如果没过期可以直接把用户之前存储在服务端的数据拿出来。

弊端:1.因为大量数据存储在服务器端,造成服务器端压力过大

           2.由于session传递,需要依赖于cookie,cookie有不安全性(后面会简单介绍一下cookie的不安全性),且对一些非浏览器的客户端以及移动端并不适用

           3.浏览器可以禁用cookie,这样就没有办法传递session了

二、cookie的不安全性

1.存储在浏览器端的cookie易被脚本获取

2.存在cookie欺骗,当获取到你cookie中的信息的时候,其实并不需要对cookie中的信息进行解密,只需要正常提交给服务器就可以,服务器会自动识别

解决办法:给cookie一个合理的有效期

                    HttpOnly:true防止XSS攻击

                    key使用uuid

                    https协议比http协议更加安全

三、token的验证过程(token作用是一个令牌)

用户向服务端发送用户名和密码,服务器验证用户名和密码,成功后返回一个token给客户端,存在cookie或者localStorage里,每次请求把token携带过去,服务端收到请求,验证token,如果一致,返回客户端请求的数据

四、JWT

jwt的本质是字符串,包含header,有效载荷(payload),签名(signature)

优点:数据量小,速度比较快

           不需要再服务端保存信息,不依赖于cookie

           对单点登录很友好

五、实际开发过程中主要过程

1.登陆后,通过uuid生成一个token,将该token作为key的一部分,作为value存储数据库中,并设置过期时间。

2.将token作为jwt的payload生成字符串发挥前端

3.前端请求携带jwt字符串

4.后端定义一个拦截器,每次收到请求时都先查看jwt中的token

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: TokenSession都是用于身份验证和授权的机制,但它们的实现方式不同。 Token是一种轻量级的身份验证方式,通常是一串加密后的字符串,包含有关用户身份和权限的信息。当用户进行登录或授权操作时,服务器会生成一个Token并将其返回给客户端,客户端在后续的请求中携带该Token服务器通过解析Token来识别用户身份和权限。 Session服务器端的一种状态管理机制,服务器会为每个会话分配一个唯一的Session ID,将该ID存储在客户端的Cookie中。当用户进行登录或授权操作时,服务器会创建一个Session,并将Session ID返回给客户端。客户端在后续的请求中携带该Session ID,服务器通过该ID来识别用户身份和权限。 总的来说,Token适用于分布式系统或跨域场景,而Session适用于同一域名下的Web应用。 ### 回答2: TokenSession都是用于身份验证和授权的机制,用于验证用户的身份和为用户提供访问权限。 Token服务器为客户端生成的一串字符,作为客户端在后续请求中进行身份验证的凭证。它可以是短暂的或永久的,在有效期内可以用来访问特定的资源或执行特定的操作。通常情况下,当用户成功登录后,服务器会生成一个token并返回给客户端,客户端将token保存在本地,之后每次请求时携带token信息,服务器通过校验token的合法性来判断用户的身份和权限。 Session是一种服务器端的机制,用于跟踪和记录用户的状态。服务器会为每个会话创建一个唯一的sessionID,并将sessionID存储在服务器上。当用户通过进行登录后,服务器会创建一个session,并将sessionID返回给客户端。客户端在后续的请求中将会携带此sessionID,而服务器可以通过检查sessionID来确定用户的身份和权限。 TokenSession的主要区别在于存储位置和实现方式。Token是存储在客户端的,而Session是存储在服务器端的。Token相对来说更容易扩展和实现分布式的系统,因为服务器不需要存储和维护session信息。而Session则可以更好地保护用户的敏感信息,因为session数据存储在服务器端,用户无法直接访问和修改。 在实际应用中,我们可以根据需求和场景选择使用TokenSession机制来进行身份验证和授权,确保系统的安全性和用户体验。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值