2017-08-01 18 views
1

私はgrails 2.2.1で作業します。私は私のプロジェクトに実装するためにCSRFに関する多くのリンクを行ってきました。グレイルでのCSRF攻撃を防止しますか?

Grails 3 CSRF protection

Grails - Is there a recommended way of dealing with CSRF attacks in AJAX forms?

http://www.redtoad.ca/ataylor/2011/01/grails-cross-site-request-forgeries-csrf/

上記の私が経てきた多くのリンクのほんの一部です。

今、私の質問に戻ります。私は "withform"や ".invalidtoken"を使いたくない。

すでに存在するRequestHeaderFilter.groovyファイルを使用したいと思います。私は、原点ヘッダーを検証するために要求ヘッダーを使用します。

下記のコードスニペットをご覧ください。

class ResponseHeaderFilters { 
    def filters = { 
     all(controller: '*', action: '*') { 
      before = { 

       def serverURL = grailsApplication.config.grails.serverURL ?: "http://localhost" 
       //this could/should be improved upon if serverURL is not set in one of our config files 
       //def OriginPrefix = serverURL.replace("http", "https") 
       def requestOrigin = request.getHeader('Origin') 

       if (request.getHeader('X-Requested-With')?.equals('XMLHttpRequest')) { 

        if (requestOrigin && requestOrigin == serverURL) { 
         response.setHeader('Expires', '-1') 
         response.setHeader('Cache-Control', 'no-cache') 
         response.addHeader('Cache-Control', 'no-store') 
         response.setHeader('X-UA-Compatible', 'IE=edge') 
        } else { 
         return false 
        } 

       } 
      } 
     } 
     addNoCachingHeaders(uri: '/**') { 
      after = { 
       response.setHeader('Expires', '-1') 
       response.addHeader('Cache-Control', 'no-cache') 
       response.addHeader('Cache-Control', 'no-store') 
       response.setHeader('X-UA-Compatible', 'IE=edge') 
      } 
     } 
    } 
} 

このコードは期待どおりに機能しません。私が何かをクリックすると、UIのページが空白になります。 最後に、「Origin」がnullになることを確認しました。 誰でもこの問題を教えてもらえますか?

答えて

-1

Grails 3.xでは、フィルタの代わりにインターセプタを使用する必要がありますが、機能は同じです。

class ResponseHeaderInterceptor { 

    boolean before() { true } 

    boolean after() { true } 

    void afterView() { 
     // no-op 
    } 
} 

私はあなた次第実装を残すが、より多くの情報のためのドキュメントを参照してやる:http://docs.grails.org/latest/guide/theWebLayer.html#interceptors

+0

私が正しく読めば質問は、Grailsの2.2程度でした。 – GLaDOS

関連する問題