首页 > 解决方案 > 我可以通过哪些方式清理 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>

标签: c#xslt

解决方案


推荐阅读