JWT + Cookie + HTTPS + CSRF

Ale*_*lex 5 cookies https csrf token jwt

我已经在移动应用程序上与JWT进行过合作,但是我将首次在网站上进行身份验证,但有一点我还是不了解:

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

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

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

kup*_*fic 5

如果将JWT用作身份验证令牌,则应将其存储为标记为httpOnly和的Cookie secure,与使用本地/会话存储相对应。如您所述,这可以防止XSS攻击,因为我们担心恶意JavaScript被注入到页面中并窃取了会话令牌。

  • 标有Cookie的cookie httpOnly无法被JavaScript读取,因此无法在XSS攻击中被盗。
  • 但是,本地/会话存储可以通过JavaScript读取,因此将会话令牌放在该位置将使其容易受到XSS攻击。

然而,使会话令牌的cookie httpOnlysecure仍然让你容易受到CSRF攻击。要知道为什么,请记住,饼干标有生成它们的域,浏览器只发送匹配该请求被作为域饼干SENT(独立于页面的请求被发送的域)。例如,假设我stackoverflow.com在一个选项卡中登录,然后在另一个选项卡中转到evil.com。如果evil.com对进行ajax调用stackoverflow.com/delete-my-account,我的stackoverflow身份验证令牌cookie将发送到stackoverflow服务器。除非该端点防止CSRF,否则我的帐户将被删除。

有一些防止CSRF攻击的技术。我建议阅读有关OWRF页面的CSRF攻击和预防措施。