如何在 grails 项目的 javascript 文件中编码 AsHtml
How to encodeAsHtml in a javascript file in a grails project
我有一个 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
这样的函数将 <
这样的字符转换为 <
,并且数据被插入标签之间而不是标签内部,这可以工作。
参见:Can I escape html special chars in javascript? 实现。
尽管如此,您最好还是避免使用 innerHTML
,并使用 DOM 操作函数。以 jQuery
为例,你可以这样写:
$(cell1).append($("<div>")
.attr("name", "caCertFileName")
.text(item.fileName.substring(33)));
这会在 HTML 结构和用户数据之间保持分离。
我有一个 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
这样的函数将 <
这样的字符转换为 <
,并且数据被插入标签之间而不是标签内部,这可以工作。
参见:Can I escape html special chars in javascript? 实现。
尽管如此,您最好还是避免使用 innerHTML
,并使用 DOM 操作函数。以 jQuery
为例,你可以这样写:
$(cell1).append($("<div>")
.attr("name", "caCertFileName")
.text(item.fileName.substring(33)));
这会在 HTML 结构和用户数据之间保持分离。