如何在 grails 项目中的 javascript 文件中编码 AsHtml



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

你可以定义 JavaScript 函数来执行 html 转义,并像这样使用它:

cell1.innerHTML = '<div name="caCertFileName">' + encodeHtml(item.fileName.substring(33)) + '</div>';

使用像 encodeHtml 这样的函数将 < 等字符转换为 &lt; ,并且数据插入标签之间而不是标签内部,这可以工作。

请参阅:我可以在javascript中转义html特殊字符吗?以实现。

不过,最好避免innerHTML,并使用 DOM 操作函数。例如,使用jQuery您可以编写:

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

这样可以在 HTML 结构和用户数据之间保持分离。

最新更新