【问题标题】:Is an auth token in query string the only solution for a simple get request?查询字符串中的身份验证令牌是简单获取请求的唯一解决方案吗?
【发布时间】:2018-12-01 21:26:32
【问题描述】:

我正在使用 JWT 对单页应用程序发出的请求进行身份验证和授权。

在应用程序的导航过程中,我使用 XMLHttpRequest,因此我可以设置一个标头并像这样使用令牌:

headers:
Authorization: Bearer MyJWTToken

但是,有时我需要在该应用程序中下载一个受保护的文件,因此我必须提供一个这样的链接,我无法设置任何标题:

<a target="_blank" href="/api/protected-uri?access_token=MyJWTToken">Download Invoice</a>

我读到在查询字符串中使用令牌根本不安全,因为它可能在服务器日志或用户浏览器历史记录中结束。

但是,我看不到任何其他解决方案。这真的是一个坏习惯吗?如何绕过这个问题?我应该使用浏览器 cookie 吗?

【问题讨论】:

  • 你在这里做了什么?我认为只有在日志中包含一些特别有趣的信息/声明时才会出现令牌。我面临着类似的问题,并希望使用令牌作为识别来自授权和经过身份验证的用户的请求源的一种方式,但我不需要传递令牌中的任何有价值的东西。在这种情况下可能有用的另一件事是single use token 的想法。这可能只适用于某些场景,但这是一个有趣的想法。
  • 当我获得令牌时,我最终在客户端上设置了一个 cookie。我不太喜欢这个解决方案,但它确实有效。您对一次性令牌的想法很酷,只是它使链接不可共享。如果您将来发现任何其他内容,我会很高兴听到它

标签: security access-token


【解决方案1】:

我会做(并且已经做过)是链接到应用程序路由,然后将用户重定向到适当的目的地。这样可以避免在呈现的 HTML 页面中包含身份验证数据。

【讨论】:

    猜你喜欢
    • 2016-12-25
    • 2016-09-26
    • 2018-08-27
    • 2022-06-27
    • 2016-02-23
    • 1970-01-01
    • 2014-06-14
    • 1970-01-01
    • 2018-11-12
    相关资源
    最近更新 更多