我正在构建一个带有 jwt 身份验证的 nodejs 服务器。
目前我的 jwts 有 1 个月的到期时间。如果用户进入登录页面,我会检查他的请求是否包含有效的 jwt,如果是,他不必输入用户名和密码。如果他注销,jwt 会在客户端被删除,因此用户下次必须使用他的凭据登录。
如果攻击者监听连接(我已经在使用 ssl)并获取令牌怎么办。即使用户注销并在下一次会话中获得新令牌,攻击者也可以使用旧令牌冒充用户,只要它是有效的,对吗?
将用户的“当前”令牌的IAT存储在数据库中并将其与请求中令牌的IAT进行比较以避免攻击者的访问是否是一个好主意?
我知道,1 个月对于 jwt 来说是相当长的时间。我也有想法在每次客户端登录时生成一个新令牌(有效期为 2 天)。但是,如果攻击者只获得 1 个有效令牌,他也会获得新令牌,不是吗?
你有什么建议吗?
谢谢,干杯!