【问题标题】:Is that safe to pass JWT in urls to authenticate users?在 url 中传递 JWT 来验证用户是否安全?
【发布时间】:2018-02-18 08:54:50
【问题描述】:

我当前的架构基于 LDAP + JSON Web Token 身份验证,并且我通过 URL 以这种方式传递 Token: https://myHostApp?jwt={myToken}

以这种方式进行是否安全,或者我应该以另一种方式传递令牌? 还假设 SSL 已启用。

【问题讨论】:

  • 请阅读我的回答。接受的答案不应被认为是可靠的。

标签: security https jwt


【解决方案1】:

您应该在每个请求的标头中传递令牌。

【讨论】:

  • 这是我打算做的,但它不适用于跨域 Web 应用程序。
【解决方案2】:

我不同意接受的答案。 可以说使用 HTTPS 可以防止数据泄露。但是,如果在查询字符串中设置了令牌,则可以实现很多攻击。例如:

  • 使用浏览器历史记录
  • 使用透明代理

此外,每个网络服务器都会记录访问请求,因此,如果攻击者访问您的服务器,所有令牌都将可用。

即使RFC6750(OAuth2 Bearer Token Usage)请勿推荐使用这种传输模式。

不要在页面 URL 中传递不记名令牌:不记名令牌不应该是 传入页面 URL(例如,作为查询字符串参数)。 相反,不记名令牌应该在 HTTP 消息头中传递或 对其采取保密措施的消息体。 浏览器、Web 服务器和其他软件可能无法满足 浏览器历史记录、Web 服务器日志和其他内容中的安全 URL 数据结构。如果不记名令牌在页面 URL 中传递, 攻击者可能能够从历史数据、日志中窃取它们, 或其他不安全的位置。

请注意,RFC6750 指的是 OAuth2 框架协议,但不限于此,应考虑在 Web 上下文中的每个令牌传输。

【讨论】:

  • 谢谢,这很有趣,您会建议在 Vanilla JavaScript 上下文中将身份验证令牌传递给 Web 上的外部资源吗?假设我想重定向在标头中传递令牌的用户?
  • URL 哈希值呢?在用户登录并重定向到他们的 Web 应用程序后,Auth0 是否不会通过 URL 哈希传递 JWT?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-10-14
  • 2023-02-15
  • 1970-01-01
  • 2015-06-26
  • 1970-01-01
  • 2011-03-04
  • 2015-09-02
相关资源
最近更新 更多