一、该问题的重现步骤是什么?
1. 正常机制下,refresh_token 7 天必过期,即便被偷,7 天后自动失效,危害有上限。
2. 4.x版本的方案让 refresh_token 只要页面开着就永不过期。一旦攻击者通过 XSS 偷到 refresh_token(auth.js 的 Cookies.set 无任何防护,JS 可读),他可以自己搭个定时器永久冒充用户,永不过期。
3. 更关键:BladeX 当前没有"会话绝对超时上限"。OAuth2Util.createRefreshToken 每次只设 exp = now + 有效期,没有保留"会话首次创建时间"做总寿命校验。所以一旦失窃,理论上真的永久有效。
二、你期待的结果是什么?实际看到的又是什么?
bladex4以前的refresh_token是绝对过期,失窃最多活 N 天,新版是refresh_token 滑动续期 + 无绝对超时上限
refresh_token 失窃后,攻击者自建定时器持续刷新 → 永久有效,且系统无任何机制强制终止
三、你正在使用的是什么产品,什么版本?在什么操作系统上?
四、请提供详细的错误堆栈信息,这很重要。
五、若有更多详细信息,请在下面提供。
扫一扫访问 Blade技术社区 移动端