使用令牌生命周期为 1 个月的 httpOnly+secure cookie 是否仍然可能发生 CSRF 攻击?

问题描述 投票:0回答:2

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

  • 如果我将 JWT 令牌与 localStorage 一起使用,则可能发生 XSS 攻击
  • 如果我使用带有 cookie 的 JWT 令牌,则可能发生 CRSF 攻击

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

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

cookies https token csrf jwt
2个回答
25
投票

如果您使用 JWT 作为身份验证令牌,则应将其存储为标记为

httpOnly
secure
的 cookie,而不是使用本地/会话存储。正如您提到的,这可以防止 XSS 攻击,我们担心恶意 JavaScript 会被注入我们的页面并窃取我们的会话令牌。

  • 标记为
    httpOnly
    的cookie无法被JavaScript读取,因此它无法在XSS攻击中被窃取。
  • 但是,本地/会话存储可以通过 JavaScript 读取,因此将会话令牌放在那里会使其容易受到 XSS 攻击。

但是,使会话令牌 cookie

httpOnly
secure
仍然会让您容易受到 CSRF 攻击。要了解原因,请记住 Cookie 标有其起源的域,并且浏览器仅发送与请求发送到的域匹配的 Cookie(与发送请求的页面的域无关) 。例如,假设我在一个选项卡中登录到 stackoverflow.com,并在另一个选项卡中转到
evil.com
。如果
evil.com
stackoverflow.com/delete-my-account
进行 ajax 调用,我的 stackoverflow 身份验证令牌 cookie 将被发送到 stackoverflow 服务器。除非该端点能够防范 CSRF,否则我的帐户将被删除。

有一些技术可以防止 CSRF 攻击。我建议阅读

此 OWASP 页面

,了解 CSRF 攻击和预防。


0
投票

如果我错了,请告诉我怎么做。

© www.soinside.com 2019 - 2024. All rights reserved.