我有一个grails项目,其UI大部分是用javascript实现的(BackBone.js)。简单地说,我有一个包含javascript文件的gsp文件。gsp页面的事件由Javascript文件中定义的处理程序处理。
现在我在javascript文件中有一些DOM XSS违规。例如cell1.innerHTML = '<div name="caCertFileName">' + item.fileName.substring(33) + '</div>';
现在我不明白如何在JavaScript文件中使用encodeAsHTML / encodeAsJavascript函数。我需要一个简短的例子来解决这个问题。
1条答案
按热度按时间j2qf4p5b1#
您可以定义JavaScript函数来执行html转义,并像下面这样使用它:
cell1.innerHTML = '<div name="caCertFileName">' + encodeHtml(item.fileName.substring(33)) + '</div>';
使用
encodeHtml
这样的函数可以将<
这样的字符转换为<
,并且将数据插入到标签之间而不是标签内部,这是可行的。请参阅:Can I escape html special chars in javascript?以取得实作。
最好避免使用
innerHTML
,而使用DOM操作函数。例如,对于jQuery
,您可以编写:这保持了HTML结构和用户数据之间的分离。