JWT(XSS)与 Cookie(CSRF)?

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

我是一家初创公司的 Python 后端开发人员。最近,我被要求构建API的身份验证系统,我使用Python的FastAPI框架实现了基于令牌的身份验证机制(JWT)。然后前端团队让我解释一下他们应该如何存储令牌,我说他们可以将其存储在本地存储上,因为浏览器没有像 cookie 这样的 JWT 内置功能。但后来我意识到它允许攻击者执行 XSS-to-ATO(帐户接管)攻击。然后我搜索了一种更安全的存储 JWT 的方法,并发现了将 JWT 存储在 httpOnly cookie 中的方法。现在,XSS 到 ATO 被阻止了,但是现在我需要处理 CSRF 攻击,这没什么大不了的,但是如果我要将 JWT 存储在 cookie 中,那么使用 JWT 的意义何在?

我脑子里有两个选择:

  1. 使用 JWT,将其存储在本地存储中,并应用强大的 CSP(内容安全策略),这样即使弹出 XSS,攻击者也无法利用该漏洞。
  2. 使用Cookie并防止CSRF(我认为Referer标头检查应该足够了,但我也会使用Cookie属性)。

我应该选择哪个选项,如果您有任何其他想法,请告诉我。

cookies jwt fastapi csrf xss
1个回答
0
投票

使用本地存储来保存 jwt 令牌不是安全的方法(xss 攻击),但将 cookie 与 csrf 令牌结合起来是处理攻击的安全方法。如果您在每次发送到后端时都准确无误地执行您的请求,您可以看到 csrf 将发生更改,并且如果您在每个操作上使用验证 csrf,则将与后端进行检查,这样可以减少漏洞。 这可能可以帮助您了解 cookie: https://www.cookiescan.com/what-are-website-cookies-and-where-are-they-stored/#:~:text=Cookies%20are%20usually%20small%20text,directory%20or%20program %20data%20子文件夹.

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