我使用xsl轉換將xml文件轉換爲html中的dotNet。我將xml中的節點值轉換爲html標籤的內容和屬性。保護XSLT注入
我使用.Net DOM操作來編寫xml,使用任意的和可能的惡意文本設置節點的InnerText屬性。 現在,惡意製作的輸入字符串會使我的html不安全。例如,某些javascript可能來自用戶,並在輸出html中找到鏈接href屬性的方式,因此不安全。
問題很簡單,在將文本分配給InnerText屬性之前,必須對我的文本進行哪些清理(如果有的話)?我認爲分配給InnerText而不是InnerXml會完成所有需要的文本清理,但似乎並非如此。
我的轉換是否必須具有任何特殊的特性才能使其安全工作?任何.net特定的警告,我應該知道?
謝謝!
如果您只是簡單地設置節點值而不是內部文本,您不會得到同樣的結果嗎? 'HtmlEncode()'對我來說似乎是多餘的。 – Tomalak
@Tomalak,主要想法是在添加文本之前對它進行編碼(您將對它進行兩次編碼);添加,你可以使用.InnerText(如OP說)或。值 –
哼...爲什麼需要編碼兩次,一次在HtmlEncode和一次在設置InnerText? –