在 url 中提供 jwt 令牌是个好主意吗?

Posted

技术标签:

【中文标题】在 url 中提供 jwt 令牌是个好主意吗?【英文标题】:Is it a good idea to supply jwt token in url? 【发布时间】:2018-09-02 09:07:17 【问题描述】:

我需要在我们的一个应用程序中进行 JSONP REST 调用。为了进行身份验证,我必须在 url 中提供 JWT 令牌。

通过这篇文章,我对它的安全方面有了一些了解。

Is it safe to put a jwt into the url as a query parameter of a GET request?

但是,我想进一步了解如何以更安全的方式向 JSONP 提供 JWT 令牌。

我可能无法提供有关我的应用程序的更多详细信息,但请相信我,我们没有使用 JSONP 来满足某些特定需求。

非常感谢。

【问题讨论】:

【参考方案1】:

如果它是查询参数的一部分,则它会进入 Web 服务器日志文件,以及(如果不是 https)任何介入代理服务器的日志。如果任何人都可以访问这些日志,那么他们可以重新使用您的令牌。如果 jwt 的过期时间很短,这可能无关紧要,但如果它的过期时间很长,这可能很重要。

此外,如果您将令牌放入 URL 并且 URL 与其他用户共享,那么在它过期之前,您可以访问该资源。如果带有令牌的 URL 曾经出现在地址栏中,这一点尤其重要,因为有人可能只是复制/粘贴它。

JWT 通常不加密,只是签名。这意味着任何人都可以从令牌中提取信息,即使它已经过期。因此,这意味着如果他们掌握了旧日志,他们就有了哪个用户访问了哪些内容的记录,而且他们还可以收集电子邮件等个人数据。

Authorization 标头中传递它会更好。然后它不会被记录。例如

Authorization: Bearer <token goes here>

【讨论】:

以上是关于在 url 中提供 jwt 令牌是个好主意吗?的主要内容,如果未能解决你的问题,请参考以下文章

通过 express req 参数传递解码的 jwt 数据是个好主意吗?

使用反射替换 java.net.URL URLStreamHandlerFactory 是个好主意吗?

使用带有特殊字符的 URL 名称是个好主意吗? [关闭]

使用 ionic 构建网站的移动 Web 版本是个好主意吗? [关闭]

在 url 中使用冒号是个好主意?

在 Web 服务 URL 中使用加密的数据库 ID 而不是 UUID 是个好主意吗?