使用哪种机制处理带有弹簧安全性的CSRF令牌



我对web安全和使用spring安全实现web安全是个新手。一个重要的概念是使用CSRF令牌防止CSRF。Spring security提供了两种管理CSRF代币的方法

  • CookieCsrfTokenRepository
  • HttpSessionCsrfTokenRepository

但是我不明白应该使用哪一种,因为我可以看到这两种方法的缺点。

  • CookieCsrfTokenRepository要求在cookie中将HTTP only属性设置为false,以便javascript可以读取该属性,并在进一步的请求中将其添加到。然而,根据我的理解,不建议只将http设置为false,因为恶意脚本也可以读取cookie并在伪造的请求中共享相同的令牌
  • HttpSessionCsrfTokenRepository正在会话中存储csrf令牌。在这种情况下,我们需要在分布式环境中引入会话粘性或会话复制,但建议使用无状态应用程序

所以请让我知道我的上述理解是否正确。如果正确,我们需要为csrf令牌实现选择哪个选项。

然而,根据我的理解,不建议仅将http设置为false,因为恶意脚本也可以读取cookie,并在伪造的请求中共享相同的令牌。

如果a(您的网站上存在XSS漏洞,或者b(您没有设置cookie的域,我相信这是真的。你的问题的其余部分在我看来是基于观点的。

然而,建议使用无状态应用程序。

注意:以下只是我对此事的看法,因为一般来说很难支持/反对无国籍状态。

这是一个安全性需要状态的示例,因此为了保护csrf令牌并避免您对cookie的担忧,您需要服务器上的状态,并且应该选择会话。

最新更新