使用jwt(仅http cookie)和csrf令牌(不是仅http cookie)有什么意义?

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

据我了解,当我使用jwt时,我需要通过将它们存储在仅http cookie中来防止csrf攻击。

这样,当用户访问恶意网站并从那里向我的服务器发出请求并自动启用 jwt cookie 时,我可以保护用户免受不需要的操作。

为此,您需要使用csrf令牌

但是它也存储在cookie中,攻击者有可能会尝试通过xss攻击来获取它。或者如果它也是http-only,它将像jwt cookies一样由浏览器自动发送。

那么,使用 csrf 令牌有什么意义呢?请帮我理解一下,谢谢!

cookies jwt csrf xss
1个回答
0
投票

在 HttpOnly cookie 中存储 JWT 时,您可以保护令牌免受基于 JavaScript 的 XSS(跨站点脚本)攻击,因为客户端脚本无法访问或操作这些 cookie。然而,仅靠这一点并不能防止 CSRF(跨站请求伪造)攻击,其中恶意网站可能会自动在向您的服务器发出的请求中包含 JWT cookie,从而可能导致不必要的操作。

为了防御CSRF攻击,您需要实现CSRF令牌。 CSRF 令牌通常存储在非 HttpOnly cookie 中或作为 HTML 响应的一部分。然后,此令牌会与请求一起手动发送,通常在自定义 HTTP 标头中(例如 X-CSRF-Token)。发出请求时,服务器会验证 CSRF 令牌是否与为该会话设置的内容相匹配。由于攻击者的站点无法访问此令牌,因此他们无法伪造合法请求。

通过这种方式,HttpOnly cookie 可以保护 JWT 免受 XSS 侵害,而 CSRF 令牌则确保请求来自合法来源,从而提供全面的保护。

要进一步阅读该主题,请考虑查看以下资源:

  1. https://cheatsheetseries.owasp.org/cheatsheets/Cross-Site_Request_Forgery_Prevention_Cheat_Sheet.html

  2. JWT 和 CSRF 区别

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