我有一段JavaScript字符串,来自不受信任的来源,嵌入在onclick标记中,我不确定该字符串的正确编码方式。下面是HTML的简化:如何在XML属性中编码JavaScript文本?
<input type="button" onclick="alert([ENCODED STRING HERE]);"
value="Click me" />
我使用含有几种方法与编码的Microsoft AntiXss library。该文本嵌入在HTML/XML属性中,因此使用AntiXss.XmlAttributeEncode方法的XML属性编码似乎是合适的。但是,它也是一段JavaScript。因此,使用AntiXss.JavascriptEncode方法的JavaScript编码似乎也适用。
我应该选择哪一种方式,让我不暴露安全漏洞,同时允许文本正确显示?
UPDATE: 我目前使用的是在这个文本使用
XmlAttributeEncode
,并把这个标签中的自定义属性中的解决方法。之后,我使用一些JavaScript从这个标签中读取它。它基本上是这样的:
<input type="button" onclick="alert(this.getAttribute('comment');"
value="Click me" comment="[XML ATTRIBUTE ENCODED TEXT HERE]" />
虽然这完美的作品,并解决了这个问题,我还是如何正确编码的JavaScript的XML属性里面很好奇。
你在做什么似乎令人困惑。如果JavaScript来自不可信来源,那么可以做的事情就很少让它信任。 – 2010-06-08 10:23:36
确实没有办法使文本中的信息可信。然而,诀窍是防止任何脚本注入攻击发生,并防止任何字符导致JavaScript错误。正确的编码将解决这个问题,这就是我想知道的。如何正确编码这个。 – Steven 2010-06-08 11:06:36