我可以通过哪些方式对XSLT输入进行消毒?

时间:2019-05-22 17:43:55

标签: c# xslt

我有C#代码正在读取存储在服务器上app.config中的XSLT文件内容。使用XslCompiledTransform.Load()加载这些内容在HP Fortify中显示为XSLT注入的高漏洞。

我可以通过什么方式验证来自app.config的输入,以便它可以顺利通过扫描?

XslCompiledTransform xslDoc = new XslCompiledTransform();
xslDoc.Load(ConfigurationManager.AppSettings["emailxslt"]);

最好是我希望通过某种消毒剂来运行此方法,例如用于HTML验证的HtmlSanitization库。不确定是否存在类似的东西,如果存在,我还没有找到。

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="html"/>
  <xsl:template match="/">
    <html>
      <head>
        <style type="text/css">
          body {  font-family:'Calibri','sans-serif'; font-size: 11pt; background-color: white; color: black; }
          td { font-family:'Calibri','sans-serif'; font-size: 11pt; background-color: white; color: black; }
          p { margin-top: 8pt; margin-bottom: 8pt; }
          p + p { margin-top: 8pt; margin-bottom: 8pt; }
          blockquote { font-style: italic; margin-top: 6pt; margin-bottom: 6pt; margin-left: 12pt; }
          blockquote + blockquote { font-style: italic; margin-top: 6pt; margin-bottom: 6pt; margin-left: 12pt; }
          .Footer { font-size: 7pt; }
        </style>
      </head>
      <body>
        <table>
          <tr>
            <td>

              <p>
                Some text:
              </p>

              <p>
                <xsl:element name="a">
                  <xsl:attribute name="href">
                    <xsl:value-of select="/Root/FileUrl"/>
                  </xsl:attribute>
                  <xsl:value-of select="/Root/FileUrl"/>
                </xsl:element>
                </p>
            </td>
          </tr>
        </table>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

0 个答案:

没有答案