Каким образом я могу дезинфицировать вход XSLT? - PullRequest
0 голосов
/ 22 мая 2019

У меня есть код c #, который читает содержимое файла XSLT, хранящегося в файле app.config, который существует на сервере. Загрузка этого содержимого с помощью XslCompiledTransform.Load () отображается в HP Fortify как высокая уязвимость для инъекций XSLT.

Каким образом я могу проверить входные данные из app.config, чтобы он прошел проверку без уязвимости?

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

Предпочтительно, я бы хотел, чтобы этот способ проходил через какое-то дезинфицирующее средство, такое как библиотека HtmlSanitization, используемая для проверки HTML. Не уверен, что что-то подобное существует, но я так и не нашел его.

<?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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...