JWT 验证了在另一个浏览器中使用的偶数令牌

Posted

技术标签:

【中文标题】JWT 验证了在另一个浏览器中使用的偶数令牌【英文标题】:JWT validated even token used in another browser 【发布时间】:2019-04-29 03:58:27 【问题描述】:

我有一个项目设置(前端 Angular)和后端(Laravel 5.6),我通过后端调用 api 以使用 JWT 登录(用于身份验证),以防返回无效凭据错误消息,这似乎没问题,但是如果返回正确的凭据令牌,则必须将其保存在客户端(使用localStorage)我复制的内容然后将令牌保存在本地存储中并尝试从不同的机器和不同的浏览器登录,两种情况下用户都已登录并重定向到仪表板。

我必须限制用户登录和重定向我怎么能做到我做错了什么?

【问题讨论】:

我不明白你做了什么。您是否将令牌从一台机器复制到另一台机器? 这是会话 cookie 和本地存储令牌的预期行为。 这篇文章可以帮助你理解JWT令牌:jwt.io/introduction @JEY 是的,我做了同样的事情,我复制了令牌并在另一台机器上尝试,也在同一台机器上尝试,但在这两种情况下使用不同的浏览器我都成功登录,因为服务器端的令牌不是还没过期。 这正是应该发生的事情。正如@JoelJoseph 所建议的,阅读有关 jwt 的更多信息 【参考方案1】:

这是安全令牌的主要问题之一:如果攻击者截获令牌,他可以从另一个浏览器或应用程序使用它。这就是为什么强烈建议设置一个非常短的生命周期(exp 声明)

但希望 RFC8471、RFC8472 和 RFC8473 最近已获得批准。这些规范允许将令牌绑定到 HTTPS 或 HTTP 连接,从而使上述攻击几乎不可能发生。

在撰写本文时,此功能尚未被浏览器广泛采用。 EDGE 支持它(草稿版),Firefox 或 Chrome 没有移动。

【讨论】:

以上是关于JWT 验证了在另一个浏览器中使用的偶数令牌的主要内容,如果未能解决你的问题,请参考以下文章

如何在 NodeJS 中使用 JWT 令牌验证路由

JWT 令牌基于仪表板应用程序的每个请求的身份验证

使用浏览器获取请求发送 JWT 令牌

我应该在哪里存储 JWT 令牌?

黑名单/验证/生成 JWT 刷新令牌

JWT 从 Laravel 中的令牌中检索经过身份验证的用户