每个请求的 csrf 令牌如何工作

how does csrf token per request work

我想保护我的应用程序免受 csrf 攻击。虽然我不能真正理解问题是什么以及我的解决方案是如何工作的,但经过一些研究我想出了一个解决方案,Angular 使用了这个解决方案。据我所知,我的解决方案需要执行以下步骤:

--> 客户请求我的水疗中心

--> 我发送 csrf 令牌(不是 httponly,以便 js 能够读取它)。我还将此 csrf 令牌保存到服务器上的用户 session。

--> 对于每个 post 请求,我希望我的客户端读取 csrf 令牌并将 X-XSRF-TOKEN header 设置为此令牌。

--> 我将通过检查请求 header 和用户 session csrf 令牌来检查每个请求。如果匹配,如果需要,我还会检查 jwt 以进行身份​​验证。

--> 验证 csrf 令牌后,我将对数据库进行更改。此外,我将再次更改 csrf 令牌,向用户发送新令牌,更改 session.

的令牌

但我不确定这有什么帮助,如果我有 xss 漏洞,任何注入的 javascript 代码也可以做同样的事情。我想了解问题以及这种解决方案如何提供帮助。谢谢。

仅供参考。我还在快速服务器上实现基于 JWT 的身份验证,使用 redis 进行 session 管理。

以下 link 可能有所帮助,但我将在此处进行总结。

https://nirajrules.wordpress.com/2010/01/16/cross-site-scripting-xss-vs-cross-site-request-forgery/

CSRF 更多的是关于跨站请求。例如,有人只是找到您的表单操作并直接发布给他们。这就是 CSRF 令牌有助于防止的情况。想象一下,人们制作了一个虚假网站,一个钓鱼网站,它实际上会调用您的表单提交端点。

XSS 非常不同,您是对的,任何能够在您的页面中 运行 的恶意 javascript 都能够访问并获取令牌。但这些是不同的东西,并不会降低 CSRF 令牌的价值。

祝你好运。