2016-04-23 76 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