我有一段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