我们的团队被要求防止 API 中的 JWT 劫持。我们的解决方案是将用户 IP 和用户代理的“指纹”存储在我们的数据库中,并根据每个请求进行验证。当用户注销时,我们删除指纹。
这有一些问题:
如果用户不注销,他们的指纹将保留。当他们返回应用程序时,如果他们的 IP 发生了变化,他们将无法登录,因为看起来他们是劫机者。
实现这种指纹识别的最佳方法是什么?我们不应该使用用户IP吗?
使用cookie。 当用户登录时,发送具有正确域名和名称的 cookie,例如“auth-cookie”。它将包含您的 jwt 令牌。 每次用户发送请求时,这些 cookie 都会自动发送回给您。 将 httpOnly 字段设置为 true,以便劫持者无法使用 javascript 读取令牌。 注销时,将“auth-cookie”cookie 设置为空白。