什么版本?4.5
测评反馈请求使用的jwt-Token,带有用户信息,不安全。
如果改成toekn不带用户信息,改成返回标识,后台把标识和用户信息存在redis里面,需要调整哪些地方?
token可以加密传输,不需要存redis,具体看: https://center.javablade.com/blade/BladeX-Doc/src/branch/master/%E7%AC%AC5%E7%AB%A0%20%E5%8A%9F%E8%83%BD%E7%89%B9%E6%80%A7/5.3%20Secure%E5%AE%89%E5%85%A8%E6%A1%86%E6%9E%B6/5.3.8%20%E4%BB%A4%E7%89%8C%E5%8A%A0%E5%AF%86.md
另外jwt设计初衷就是脱离状态持久化,可以无状态认证,并且jwt只携带用户id信息,并不携带用户敏感信息。
现在返回的token可以直接使用base编码解开,要求请求和返回的信息中不能带用户信息
token加密也有配置

如果要修改,你可以在这里自行拓展修改逻辑
接着我给你抛一个问题,比如我是攻击方,现在你改完token修改完毕后已经无法从token解析出用户的id了,但是我已经拿到了token的值,我直接去调用系统自带的 /oauth/user-info 的接口 ,我都不需要去解析token,直接就获取到用户信息了,这种情况应该怎么防范?
再接着既然已经有token了,那么我去调用一些业务模块的接口,直接把数据全部查一遍,然后再把数据都删了,这种情况应该怎么防范?
所以给你提“漏洞的人”提的这些并没有意义,既然令牌都已经被攻击方拿到了,那么还有必要去解析用户信息么?我直接就可以把数据导出并且全都删完。
还有要说的是 https 环境下,攻击方无法截取请求参数也无法截取到token的值,那么你的这个大前提也就只能是知道账号密码的人,登录成功后来获取的token。那么问题来了,既然知道账号密码了,怎么去防止攻击? 就好比你拿着钥匙去开门,怎么才能防住开门?知道手机解锁密码,怎么防止手机被解锁?
再举个例子,阿里云的物联网平台,没有token的时候我调用返回的是让我登录

但是我拿到token后直接就可以调用他们平台的接口,而且还能把他们的错误信息给调出来,这种情况脱离了系统就能调用算不算漏洞?为什么他们不修复呢?
说到底,拿到token这个大前提就不是漏洞存在的条件,都已经能拿到token了,那在token有效期内想做什么就做什么了。
真正的token漏洞,是把用户的所有信息比如账号密码、银行卡卡号密码也都返回了,这个才是要去修复的,只返回id,并不会影响安全。

扫一扫访问 Blade技术社区 移动端