ฉันทำงานกับ grails 2.2.1 ฉันได้อ่านลิงก์มากมายที่เกี่ยวข้องกับ CSRF เพื่อนำไปใช้ในโครงการของฉัน
Grails - มีไหม วิธีที่แนะนำในการจัดการกับการโจมตี CSRF ในรูปแบบ AJAX
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" มาเป็นโมฆะ ใครสามารถช่วยฉันเกี่ยวกับปัญหานี้?