【问题标题】:Grails - Spring Security plugin: Enabling CSRF filterGrails - Spring Security 插件:启用 CSRF 过滤器
【发布时间】:2016-08-16 19:21:18
【问题描述】:

我知道 Spring Security 在 3.2.0 版本中添加了内置的 CSRF 保护,如下所述:http://docs.spring.io/spring-security/site/docs/3.2.0.CI-SNAPSHOT/reference/html/csrf.html

我正在使用带有 spring-security-core 插件版本 2.0.0 的 Grails 2.4.3,它似乎使用 Spring Security 版本 3.2.3,但是 CSRF 保护要么未启用,要么不存在。

我想知道是否有办法在我缺少的插件中打开它。有没有办法使用这个插件的链接中提到的配置方法之一?任何帮助,将不胜感激!谢谢。

我知道以后的版本默认开启了这个,但是升级 Grails 版本对我来说不是一个选项,并且更高版本的 spring-security-core 插件需要 Grails 3。

【问题讨论】:

    标签: grails spring-security


    【解决方案1】:

    据我所知,任何版本的 Grails spring 安全插件都没有默认的 CSRF 保护。 根据弹簧安全文档

    1) 您需要确定您的应用程序正在使用 PATCH、POST、PUT 和/或 DELETE 来处理任何修改状态的内容

    2) 在所有 PATCH、POST、PUT 和 DELETE 方法中包含 CSRF 令牌

    Grails 可以为您生成和检查令牌,只需使用<g:form useToken="true" ...> 进行所有表单提交。检查它here。 Bun 那么你必须修改所有的控制器。

    否则您必须使用一些自定义解决方案,例如您可以创建一个用于生成令牌的服务,从 gsp 调用它:

    <g:set var="token" bean="tokenService"/>
    <g:form token="${token.getToken()}">
    

    并创建一个过滤器,以验证来自每个 PATCH、POST、PUT 和 DELETE 请求的令牌

    【讨论】:

    【解决方案2】:

    您可以参考https://stackoverflow.com/a/38053797

    我在 grails 2.5.6 上实现了这个。希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 2014-04-07
      • 2016-05-24
      • 2015-07-20
      • 2015-11-11
      • 2015-08-10
      • 2011-08-15
      • 2016-03-23
      • 2012-09-29
      • 2017-05-26
      相关资源
      最近更新 更多