首页 > 解决方案 > 在 OAuth 重定向 URL 中有访问令牌是不是很糟糕

问题描述

我正在构建一个 oauth 登录流程,但我不确定我是否做错了,因为我需要通过重定向 URL 将承载令牌发回,例如 /oauth2/redirect?token=[TOKEN]。但是不建议通过 URL 传递令牌吗?正如在这个线程中指出的那样:

不要在页面 URL 中传递不记名令牌:不应该在页面 URL 中传递不记名令牌(例如,作为查询字符串参数)。

相反,不记名令牌应该在采取保密措施的 HTTP 消息头或消息体中传递。浏览器、Web 服务器和其他软件可能无法充分保护浏览器历史记录、Web 服务器日志和其他数据结构中的 URL。

如果不记名令牌在页面 URL 中传递,攻击者可能能够从历史数据、日志或其他不安全的位置窃取它们。

我一定错过了整个流程中的某些内容,并且想了解更多有关此问题的信息。任何输入表示赞赏!

更新

可能不正确,但这是我经过一番挖掘后的理解。传递token的三种方式:

  1. URL(不推荐)
  2. 身份验证标头
  3. 请求正文

但在 oauth 重定向用例下,选项 2 和 3 不可行。所以选项 1 是唯一可用的选项。如果确实需要,可以对令牌进行加密以确保安全。

标签: restoauthjwt

解决方案


我认为这仅意味着,GET当服务器需要令牌时,您不应使用请求,而应使用POST或任何适当的方式。在 GET 请求中,参数包含在 URL 中,这些参数可能最终出现在日志或其他历史记录中,其他请求类型将发送与请求 URL 分开的参数。

PS BTW 如果您自己没有实现 OAuth 服务器,则不必发送包含令牌的重定向 url。


推荐阅读