backbone.js 如何在grails项目的javascript文件中对AsHtml编码

aydmsdu9  于 2022-11-10  发布在  Java
关注(0)|答案(1)|浏览(107)

我有一个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函数。我需要一个简短的例子来解决这个问题。

j2qf4p5b

j2qf4p5b1#

您可以定义JavaScript函数来执行html转义,并像下面这样使用它:
cell1.innerHTML = '<div name="caCertFileName">' + encodeHtml(item.fileName.substring(33)) + '</div>';
使用encodeHtml这样的函数可以将<这样的字符转换为&lt;,并且将数据插入到标签之间而不是标签内部,这是可行的。
请参阅:Can I escape html special chars in javascript?以取得实作。
最好避免使用innerHTML,而使用DOM操作函数。例如,对于jQuery,您可以编写:

$(cell1).append($("<div>")
    .attr("name", "caCertFileName")
    .text(item.fileName.substring(33)));

这保持了HTML结构和用户数据之间的分离。

相关问题