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

Ben*_*key 5 javascript cookies jwt single-page-application

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

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

但这让我感到困惑.我理解攻击媒介,但是如果你有一个受到损害的第三方javascript依赖,那么你是不是有效地搞砸了,因为它可以监听/捕获用户在与你的应用交互时做的任何事情?

Tom*_*ott 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保护,用户也很容易从他们自己的浏览器发出未经授权的请求.

希望这些信息有所帮助