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

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

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

在以下情况下是安全的:

  1. JWT one-time 仅使用时间
  2. 令牌中存在 jtiexp 声明
  3. 接收方使用 jtiexp
  4. 正确实施重放保护

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

除此之外,通过在查询参数中使用它,您可以 运行 达到 URL 浏览器或服务器的大小限制;在 header 中使用它可以提供更多 space,将它用作 POST 参数效果最好。

Is it safe to put a jwt (json web token) into the url as a query parameter of a GET request?

是的,只要 JSON Web 令牌 (JWT) 的编码方式与 URL:

中查询参数的编码是透明的

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

这种安全是有限的:

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

它充其量与 URL 信息的传输一样安全,而且永远不会更安全。

而且如果 URL 信息的传输不安全,那么 URL 中的所有内容也不会更安全,其中包括用作 GET 参数的 JWT。


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

对于所有这些,它取决于。

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