我有一段 JavaScript 字符串,来自不受信任的来源,嵌入在 onclick 标记中,我不确定编码该字符串的正确方法是什么。这是 HTML 的简化:
<input type="button" onclick="alert([ENCODED STRING HERE]);"
value="Click me" />
我使用包含多种编码方法的Microsoft AntiXss 库。文本嵌入在 HTML/XML 属性中,因此使用AntiXss.XmlAttributeEncode方法对 XML 属性进行编码似乎很合适。但是,它也是一段 JavaScript。因此,使用AntiXss.JavascriptEncode方法的 JavaScript 编码 似乎也很合适。
我应该选择哪种方式,既不暴露安全漏洞,又允许正确显示文本?
更新: 我目前使用的解决方法是
XmlAttributeEncode
在此文本上使用并将其放在标签的自定义属性中。之后,我使用一些 JavaScript 从这个标签中读取它。它基本上看起来像这样:
<input type="button" onclick="alert(this.getAttribute('comment');"
value="Click me" comment="[XML ATTRIBUTE ENCODED TEXT HERE]" />
虽然这完美地工作并解决了问题,但我仍然很好奇如何在 XML 属性中正确编码 JavaScript。