用户退出登录时JWT的处理方式?-灵析社区

卑微实习僧

系统后端采用springboot,jwt认证,jwt设置了过期时间,并已实现jwt自动续签功能 请教一下:当用户退出登录时,是直接让前端删除用户jwt还是说后端将退出登录用户jwt添加到黑名单中?以及他们各自的安全性及其他考量?

阅读量:15

点赞量:0

问AI
如果你的jwt过期时间定义的如果足够短,就可以让前端直接剔除,业务安全性肯定没有拉入黑名单的安全性强, 当然如果你的业务需要达到很高的安全等级了, 你只是在 jwt 下功夫是不行的, 你将 jwt 拉入黑名单其实并不能防止 jwt 被盗用的问题, 理论上 现在主要应用 无论是 移动端 或者 pc端, 很少有会有用户主动会去 进行退出账户的操作, 导致业务实际其实都是 jwt 自然过期失效。其实这块代码也没提升安全性。 不过你想提高接口的安全性,可以从接口签名的方向去做。接口签名一般会把 时间戳,请求参数,流水号 这三个数据进行加密来实现接口的安全性 首先接口签名有以下好处 * 数据防篡改: 接口签名算法可以把接口的参数也纳入加密中,一般会通过摘要算法把请求参数进行处理, 当服务端收到消息可以把请求数据通过同样的算法计算后, 然后进行对比,如果服务端算出的值与客户端传的值是不同的,证明数据进行过篡改 * 有效期校验: 签名里包含的时间戳,可以应对重放攻击, 当攻击者通过某种手段获取到接口请求, 直接啥都不改, 重复请求已获取返回的话, 如果你的允许相差5s的话, 那这个接口的有效期只有 5s ,攻击者只能在5s内获取你的接口信息,并在5s内进行使用, * 防止接口重复调用: 签名里的流水号,可以用于接口的唯一性确认, 你可以当接口请求后,放入redis 的黑名单里, 当又出现这个流水号时,你就可以判定有人重复使用这个请求,属于非法请求 具体你可以看看这篇文章 "https://www.cnblogs.com/hjzgg/p/11062043.html" (https://link.segmentfault.com/?enc=MCI2z23EK7VCvOpl3eJXfg%3D%3D.04aVDs%2FCNb13liudLb2tWMYFH2bm0TLDbNb3s2QrIoL2S2hQVbm4GvvIH5fQtdJo)