在XSLT生成的内容中防止XSS(和其他攻击)

我有一个XSLT样式表来处理XML文档以生成HTML。 我已经意识到可以以这样的方式操纵网站,即用户可以提供他们喜欢的任何XML - 遗憾的是这是不可避免的,所以我想通过确保我的XSLT来保护自己免受XSS(和其他攻击)的影响stylesheet能够安全地处理任何文档。 为实现这一目标,我需要注意什么? 更新: 我知道默认情况下XSLT转义输出(可以使用
disable-output-escaping
属性禁用) - 这是否足以阻止某人注入恶意HTML元素和属性?     
已邀请:
如果您正在处理来自不受信任来源的XML数据并在您的网站上显示结果,请始终记住它不受信任。 你永远不应该使用xsl:copy或xsl:copy-of。如果直接复制文本以外的节点,则可以进行XSS攻击。 您不应该使用复杂或递归规则。特制的输入可以通过延迟XSLT处理或使处理器崩溃来创建DoS。 另外,如您所述,请勿禁用输出转义。 如果要将转换结果传递给SQL Server,则不应将任何提供的数据放入SQL查询中。 例如,这是不好的:
<xsl:if test="@order">ORDER BY <xsl:value-of select="@order"/></xsl:test>
这很好:
<xsl:if test="@order">ORDER BY
    <xsl:chose><xsl:when test="@order = 'foo'">foo</xsl:when> [...] </xsl:chose>
</xsl:test>
如果确实需要将数据传递给查询,请使用绑定变量。     

要回复问题请先登录注册