将jwt作为GET请求的查询参数放入url是否安全?

all*_*kim 53 security http jwt

将jwt(json web令牌)作为GET请求的查询参数放入url是否安全?

Han*_* Z. 66

在下列情况下可以安全:

  1. JWT仅限一次性使用
  2. jtiexp权利要求书中存在于令牌
  3. 接收器使用jti和正确实现重放保护exp

但是如果它被用作可以重复使用的令牌,例如针对API,则将其作为查询参数提供是不太优选的,因为它可能最终出现在日志和系统进程信息中,可供有权访问服务器的其他人使用或客户系统.在这种情况下,最好将其作为标题或POST参数的一部分呈现.

除此之外,通过在查询参数中使用它,您可能会遇到浏览器或服务器上的URL大小限制; 在标题中使用它可以提供更多空间,使用它作为POST参数最好.

  • 此外,未经培训的用户可能会使用令牌复制并粘贴URL,这可能导致基本上意外的会话劫持. (9认同)
  • 因为作为查询参数,令牌可能最终出现在服务器日志,浏览器日志或引用标头中,并且有人可以从那里抓取它并尝试重新使用它. (6认同)
  • @theprogrammer HTTPS 在传输过程中进行加密,但客户端计算机和服务器都可能会记录 URL。浏览器历史记录、Chrome/Firefox 扩展、服务器访问日志、性能监控工具等都可能出于充分原因记录 URL,因此可能会无意中记录 URL 令牌。 (4认同)
  • 一个相当短的`exp` < 2 分钟怎么样?再加上第二次重定向(在应用程序收集到 `jwt` 之后)?第二个重定向只是为了防止复制和粘贴问题。如果您的浏览器遭到入侵,即使是标头也无法避免您的令牌被盗。 (2认同)

hak*_*kre 6

将 jwt(json Web 令牌)作为 GET 请求的查询参数放入 url 中是否安全?

是的,只要 JSON Web Token (JWT) 的编码方式对于 URL 中的查询参数的编码是透明的:

JWT 是 URL 编码安全的。原地使用不会丢失数据;不需要额外的编码;它甚至本质上是 URL 编码安全的,在 JWT 上多次应用 url 编码(百分比编码)不会破坏它。

这种安全性是有限的:

如果 URL 本身是数据泄漏的一部分,则就地使用时可能会发生数据泄漏。根据 URL 的常用方式,您应该将 URL 查询参数中的任何 JWT 视为已经发生数据泄漏,因此已经为其准备了 JWT(例如,防止重放攻击)。

它最多只能像 URL 信息的传输一样安全,而且永远不会更安全。

如果 URL 信息的传输不安全,则 URL 中的所有内容都不会更安全,其中包括用作 GET 参数时的 JWT。


除了在 URL 中使用它(在我看来这是一种传输机制)之外,您可能还需要考虑其他数据保留、协议甚至您自己的系统属性,包括相关 JWT 本身的属性。

对于所有这些都取决于。

对于其中一些注意事项,请参阅其他答案JSON Web Token (JWT) - RFC-7519 incl。那里引用的更新。