我使用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? –