javascript - sessionStorage 与 cookie 中的 JWT token ?

标签 javascript cookies single-page-application jwt

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

主要陈述的原因是,如果您加载的第 3 方 javascript 依赖项受到损害,它可以通过 sessionStorage/localStorage 窃取并将 JWT 传输到某个地方。

但这让我感到困惑。我了解攻击媒介,但如果您有一个受损的第 3 方 javascript 依赖项,那么您是不是真的被搞砸了,因为它可以监听/捕获用户在与您的应用程序交互时所做的任何事情?

最佳答案

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

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

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

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

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

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

您可以看到,当存在 XSS 漏洞时,您可以发出未经授权的请求,攻击者需要跳过更多的环节才能利用 XSRF。这意味着当 XSS 存在时(无论是否有 XSRF 保护),都会存在进行未授权请求的攻击向量。

希望这能为我的下一个观点扫清障碍。

与窃取代表用户身份和 session 的无状态 token 相比,XSRF 攻击或未经授权的请求的影响和范围更小。泄露 token 意味着攻击者可以完全控制代表用户在他的时间在他的机器上发起攻击。

总而言之,当您出现 XSS 时:

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

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

希望这些信息对您有所帮助。

关于javascript - sessionStorage 与 cookie 中的 JWT token ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37770967/

相关文章:

javascript - 如何根据选定的日期获取图表上的数据(使用日期选择器过滤数据图表JS)

javascript - 如何允许编辑属性,例如在 PrestaShop 结帐时的颜色、尺码?

flutter - Google Analytics、Flutter、cookies 和通用数据保护条例 (GDPR)

angularjs - 在 ui-router 解析期间应用加载微调器

vue.js - 单页应用程序路由

javascript - 如何在 THREE.TextGeometry 中添加带上标的字符串?

javascript - 如何验证 MM/dd/yyyy hh :mm format? 的 DateTime

javascript - jQuery 刷新后保存点击状态

javascript - 任何人都可以向我解释 document.cookie

angularjs - Paypal在单页应用中的实现