Grails - 在flash.message中避免使用XSS的最佳实践?

时间:2011-03-19 14:31:13

标签: grails xss security

因此,在Grails中为您生成的默认控制器将向用户返回一条消息,让用户知道已成功插入/编辑了某些内容。默认情况下返回插入的东西的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()标记到name参数上?这对我来说似乎有点容易出现。

谢谢, 罗宾

1 个答案:

答案 0 :(得分:3)