2016-04-23 72 views
2

我知道Spring Security的加入内建CSRF保护在3.2.0版本说明这里:http://docs.spring.io/spring-security/site/docs/3.2.0.CI-SNAPSHOT/reference/html/csrf.htmlGrails的 - 春季安全插件:启用CSRF过滤

我使用Grails 2.4.3与弹簧安全 - 核心插件版本2.0.0似乎使用Spring Security版本3.2.3,但是,CSRF保护不启用或不存在。

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

我知道,以后的版本有这个在默认情况下,但Grails的升级版本是不是一种选择对我来说,和弹簧安全核心插件更高版本要求的Grails 3.

回答

1

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

1)你需要肯定的是,你的应用程序使用补丁,POST,PUT,和/或删除任何修改状态

2)包含的CSRF令牌在所有的补丁,POST,PUT和DELETE方法

Grails能够产生并检查令牌你,只是用<g:form useToken="true" ...>所有形式submitions。检查它here。 Bun,那么你必须修改所有的控制器。

否则,您必须使用一些定制的解决方案,例如,你可以为令牌生成创建服务,普惠制称之为:

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

,并创建一个过滤器,从每一个补丁,POST验证令牌, PUT和DELETE请求

+0

根据[https://docs.spring.io/spring-security/site/docs/3.2.0.CI-SNAPSHOT/reference/html/csrf.html]文档,CSRF保护是在最新版本的Spring Security中默认启用。在最新版本的grails中,可以通过用'创建表单来利用CSRF令牌。请参阅http://docs.grails.org/2.4.5/guide/single.html#formtokens。 – GLaDOS