首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >防止grails中的CSRF攻击?

防止grails中的CSRF攻击?
EN

Stack Overflow用户
提问于 2017-08-01 18:01:00
回答 1查看 538关注 0票数 1

我在grails 2.2.1上工作。我已经通过了许多关于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文件。我想使用请求头部来验证原始头部。

请找到下面的代码片段。

代码语言:javascript
复制
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“是空的。有人能帮我解决这个问题吗?

EN

回答 1

Stack Overflow用户

发布于 2017-08-01 19:07:41

在Grails 3.x中,您需要使用拦截器而不是过滤器,但功能是相同的。

代码语言:javascript
复制
class ResponseHeaderInterceptor {

    boolean before() { true }

    boolean after() { true }

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

我将把实现留给您,但请参阅文档以获取更多信息:http://docs.grails.org/latest/guide/theWebLayer.html#interceptors

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45434788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档