因此,在 Grails 中为您生成的默认 Controller 将向用户返回一条消息,让他们知道某些内容已成功插入/编辑。默认情况下返回插入的东西的 id,domainClassInstance.id 在下一行的末尾
flash.message = "${message(
code: 'default.updated.message',
args: [
message(code: 'domainclass.label', default: ''),
domainClassInstance.id
])}"
在您的实际应用程序中要做的一个明显改进是更改相关对象的标题/名称,即:
flash.message = "${message(
code: 'default.updated.message',
args: [
message(code: 'domainClass.label', default: ''),
domainClassInstance.name
])}"
然而,这引入了 XSS 漏洞,因为“名称”字段直接作为消息输出。是否有万无一失的方法来推荐人们创建他们的消息来避免这种情况,或者我是否需要确保人们总是将 .encodeAsHTML() 标记到名称参数上?这对我来说似乎有点容易出错。
谢谢, 罗宾
最佳答案
- 将
encodeAs="HTML"
属性添加到消息参数。 - 顺便说一句,你可以使用
flash.args
andflash.default
.
关于Grails - 在 flash.message 中避免 XSS 的最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5362705/