rest - 在 OAuth 重定向 URL 中有访问令牌是不是很糟糕
问题描述
我正在构建一个 oauth 登录流程,但我不确定我是否做错了,因为我需要通过重定向 URL 将承载令牌发回,例如 /oauth2/redirect?token=[TOKEN]。但是不建议通过 URL 传递令牌吗?正如在这个线程中指出的那样:
不要在页面 URL 中传递不记名令牌:不应该在页面 URL 中传递不记名令牌(例如,作为查询字符串参数)。
相反,不记名令牌应该在采取保密措施的 HTTP 消息头或消息体中传递。浏览器、Web 服务器和其他软件可能无法充分保护浏览器历史记录、Web 服务器日志和其他数据结构中的 URL。
如果不记名令牌在页面 URL 中传递,攻击者可能能够从历史数据、日志或其他不安全的位置窃取它们。
我一定错过了整个流程中的某些内容,并且想了解更多有关此问题的信息。任何输入表示赞赏!
更新
可能不正确,但这是我经过一番挖掘后的理解。传递token的三种方式:
- URL(不推荐)
- 身份验证标头
- 请求正文
但在 oauth 重定向用例下,选项 2 和 3 不可行。所以选项 1 是唯一可用的选项。如果确实需要,可以对令牌进行加密以确保安全。
解决方案
我认为这仅意味着,GET
当服务器需要令牌时,您不应使用请求,而应使用POST
或任何适当的方式。在 GET 请求中,参数包含在 URL 中,这些参数可能最终出现在日志或其他历史记录中,其他请求类型将发送与请求 URL 分开的参数。
PS BTW 如果您自己没有实现 OAuth 服务器,则不必发送包含令牌的重定向 url。
推荐阅读
- unity3d - Unity:Animator无法预览过渡
- php - 如何在 laravel 中使用 php 的“RecursiveArrayIterator”?
- java - 如何从Java中的参数调用不同的方法?
- sql-server - 从 SQL Server 向 ADFS 添加自定义声明
- sql - 将 varchar 转换为 int(奇怪的情况?)
- python - 没有按位交集的 Numpy 广播按位联合
- android - 根据图像视图的大小滑动加载质量照片[如果尺寸小(图标)则低]
- sql-server - 如何在 SQL 中从用户定义的日期添加 1 天?
- angular - Angular - 从组件更新服务的属性
- oracle - 在oracle中触发以防止插入重复数据