【发布时间】:2018-01-08 03:23:47
【问题描述】:
我在 grails 2.2.1 上工作。我已经通过许多关于 CSRF 的链接在我的项目中实施。
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 文件。我想使用请求头来验证源头。
请在下面找到代码sn-p。
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 中的页面都会变为空白。 最后我检查了“起源”是否为空。 有人可以帮我解决这个问题吗?
【问题讨论】:
标签: java grails csrf response-headers