JWT的优缺点及主动失效方案

原因:前后端分离

以前的传统模式下,后台对应的客户端就是浏览器,就可以使用session+cookies的方式实现登录,但是在前后分离的情况下,后端只负责通过暴露的RestApi提供数据,而页面的渲染、路由都由前端完成。因为rest是无状态的,因此也就不会有session记录到服务器端。

优点

JWT的优点是服务端生成之后就不需要在维护JWT,只需要解析即可,省去分布式session方案中需要去数据库查询的时间。

缺点

不易实现JWT的主动失效。

要改变某个用户权限时数据库中用户的权限很容易改变,下次登录获得的JWT也是配置后的,还要解决的就是之前已经发放的失效前权限的JWT。

失效指的是加入管理员不想让某个持有JWT的用户继续访问资源,要让JWT失效不能再访问资源。

解决方案

将有效时间调小

但是即使过小会增加登陆的流程相当于一直在做登录操作。

维护JWT白名单

每个JWT发放都记录在数据库,这种和保存sessionid差不多。。

失效就将某个用户的JWT移除白名单。

维护JWT黑名单

失效就将该用户的JWT移入黑名单,直到过期再删除。

维护JWT版本号

数据库中记录用户所持有id的最新值,每次生成JWT时版本号自增。验证时先比较JWT版本号与数据库中维护的最新版本号是否相等,小于则失效。

 

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JWT(JSON Web Token)和 CSRF token(Cross-Site Request Forgery token)都是常见的安全机制,但它们的作用有所不同。 - JWT 主要用于认证和授权,它是一种基于 JSON 的开放标准,用于在客户端和服务器之间传递安全声明。JWT 通常包含用户身份信息、访问权限等信息,用于验证用户身份和控制用户权限,从而保证数据的安全性和完整性。 - CSRF token 主要用于防止跨站点请求伪造攻击,它是一种随机生成的 token,用于验证用户提交的请求是否合法。CSRF token 通常存储在用户的会话中,当用户提交表单或发出请求时,服务器会将 token 作为隐藏表单字段或请求头信息返回给客户端,客户端再将其作为表单提交或请求头信息一起发送到服务器端进行验证。 它们的优缺点如下: - JWT 的优点是可以在多个应用程序之间共享,由于 JWT 包含了用户身份信息和访问权限等信息,因此可以减少对服务器的重复查询和验证,提高应用程序的性能。但是,如果 JWT 被劫持或篡改,那么攻击者就可以冒充用户进行访问,造成安全风险。 - CSRF token 的优点是可以有效防止跨站点请求伪造攻击,保证用户提交的请求都是合法的,从而保护用户的安全。但是,CSRF token 需要将 token 存储在用户的会话中,如果会话被劫持或泄露,那么攻击者就可以使用该 token 进行攻击,造成安全风险。 综上所述,JWT 和 CSRF token 都是常见的安全机制,应用场景不同,具有各自的优缺点。在实际开发中,应根据具体场景选择合适的安全机制,以保证应用程序的安全性和稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值