首页 文章

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

提问于
浏览
0

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

  • 客户要求我的水疗中心

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

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

  • 我将通过检查请求标头和用户会话csrf标记来检查每个请求 . 如果匹配,我还会检查jwt是否需要验证 .

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

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

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

1 回答

  • 2

    以下链接可能有所帮助,但我将在此总结 .

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

    CSRF更多的是关于跨站点请求 . 例如,有人只是找到您的表单操作并直接发布给他们 . 这就是CSRF令牌有助于防止的问题 . 想象一下,人们制作一个假网站,一个网络钓鱼网站,实际上是通过您的表单提交 endpoints .

    XSS是非常不同的,你是对的,任何能够在你的页面中运行的恶意JavaScript都能够访问和获取令牌 . 但这些都是不同的东西,并没有削弱CSRF代币的 Value .

    祝好运 .

相关问题