在Spring WebFlow应用程序中防止跨站点请求伪造

Eri*_* J. 6 security csrf spring-security spring-webflow

我正在寻找一种(希望是直截了当的)方法来为Spring WebFlow 2上构建的应用程序添加CSRF保护.

一种可以很好地迁移到Spring WebFlow 3(发布时)的方法是首选.

roo*_*ook 4

防止 CSRF 最简单的方法是检查引用者request.getHeader("referer");以确保请求来自同一域。CSRF 预防备忘单涵盖了此方法。

这种 CSRF 保护系统在内存要求有限的嵌入式网络硬件上很常见,摩托罗拉在其大多数硬件上都使用这种方法。这不是最安全的 CSRF 保护,基于令牌的保护更好,但仍然可以通过 xss 绕过这两个系统。基于令牌的 CSRF 保护的最大问题是,需要花费大量时间返回并修复每个请求,并且您可能会错过一些请求。

实现此目的的一种安全方法是检查所有传入 POST 请求的引荐来源网址,并使用 POST 来执行敏感功能,例如更改密码、添加用户帐户、执行代码、进行配置更改。GET 应该只用于导航或搜索,基本上 GET 对于不会导致状态更改的任何内容都是安全的。

确保使用xss 扫描仪测试您的网站。

  • @John.Larison 是的,在您自己的浏览器上欺骗您的引用非常容易,但是在 CSRF 攻击中这是不可能的。请参阅 OWASP CSRF 预防备忘单,不要传播明显不正确的信息。 (4认同)