会话存储与cookie中的JWT令牌?

时间:2016-06-12 05:15:02

标签: javascript cookies single-page-application jwt

Stormpath有很多博客文章讨论你应该如何使用cookie来存储你的JWT而不是sessionStorage / localStorage:

主要说明的原因是,如果您加载的第三方javascript依赖项受到威胁,它可以通过sessionStorage / localStorage进行窃取并将JWT传输到某个地方。

但这对我来说是一个令人困惑的理由。我了解攻击媒介,但如果你有第三方javascript依赖,那么你是不是有效地搞砸了,因为它可以监听/捕获用户在与你的应用互动时做的任何事情?

1 个答案:

答案 0 :(得分:9)

我是https://stormpath.com/blog/where-to-store-your-jwts-cookies-vs-html5-web-storage

的作者

当页面上存在XSS时,攻击者有权:

  • HTML5网络存储(本地和会话)
  • 未使用httpOnly标志设置的Cookie
  • 控制选项卡直至关闭并且能够发出未经授权的请求

您也可以开始制定攻击以绕过XSRF保护。

当存在XSRF漏洞时,攻击者有权:

  • 从第三方域发出未经授权的请求,如果您可以在那里引诱用户(或在XSS存在的情况下将其发送到那里)。

您可以看到,当存在XSS漏洞时,您可以发出未经授权的请求,并且攻击者需要跳过更多的箍来利用XSRF。这意味着当XSS存在时(无论是否有XSRF保护),将存在发出未授权请求的攻击媒介。

希望这能为我的下一点做好准备。

XSRF攻击或未经授权的请求比窃取代表用户身份和会话的无状态令牌具有更小的影响和范围。泄露令牌意味着攻击者可以完全控制在他的机器上代表用户制定攻击。

总之,当你出现XSS时:

  • 在Web存储中存储访问令牌,在XSS存在期间使用您站点的任何用户的令牌都会受到损害。这意味着攻击者可以获得数千个有效的访问令牌,并且可能会造成很大的伤害(如果您在Web存储中存储刷新令牌,则会更多)。用户也很容易从他们自己的浏览器发出未经授权的请求。

  • 在httpOnly cookie中存储访问令牌,任何用户的令牌都不会受到损害。但是,即使存在XSRF保护,用户也很容易从他们自己的浏览器发出未经授权的请求。

希望这些信息有所帮助。