JWT + cookies + HTTPS + CSRF

JWT + cookies + HTTPS + CSRF

我已经在移动应用程序上使用了 JWT,但我将第一次在网站上实现它以进行身份​​验证,但我还有一点不明白:

...,但是如果我在 HTTPS 上使用 JWT 令牌和 httpOnly+secure cookie 并且令牌生命周期为 1 个月,在这种情况下是否仍然可能发生 CSRF 攻击?

我在网上看到了带有 cookie 的自定义令牌或带有 localStorage 或 JWT 的自定义令牌,但我没有明确得到 httpOnly+secure cookie + JWT + HTTPS + CSRF 需求的答案。

如果您使用 JWT 作为身份验证令牌,它应该存储为标记为 httpOnlysecure 的 cookie,而不是使用 Local/Session 存储。正如您提到的,这可以防止 XSS 攻击,我们担心恶意 JavaScript 被注入我们的页面并窃取我们的会话令牌。

  • 标记为 httpOnly 的 cookie 无法被 JavaScript 读取,因此无法在 XSS 攻击中被窃取。
  • Local/Session 然而,存储可以被 JavaScript 读取,因此将会话令牌放在那里会使它容易受到 XSS 攻击。

但是,使会话令牌 cookie httpOnlysecure 仍然容易受到 CSRF 攻击。要了解原因,请记住 cookie 标有它们的来源域,并且浏览器仅发送与请求被发送到的域匹配的 cookie sent(独立于域发送请求的页面)。例如,假设我在一个选项卡中登录 whosebug.com,然后在另一个选项卡中转到 evil.com。如果 evil.comwhosebug.com/delete-my-account 进行 ajax 调用,我的 Whosebug 身份验证令牌 cookie 将被发送到 Whosebug 服务器。除非该端点防止 CSRF,否则我的帐户将被删除。

有防止 CSRF 攻击的技术。我建议阅读 this OWASP page 关于 CSRF 攻击和预防的内容。