Megosztás a következőn keresztül:


CA5374: Ne használja az XslTransformot

Tulajdonság Érték
Szabályazonosító CA5374
Cím Ne használja az XslTransformot
Kategória Biztonság
A javítás kompatibilitástörő vagy nem törik Nem törés
Alapértelmezés szerint engedélyezve a .NET 8-ban Nem

Ok

Olyan példányosítás System.Xml.Xsl.XslTransform, amely nem korlátozza a potenciálisan veszélyes külső hivatkozásokat, és nem akadályozza meg a szkripteket.

Szabály leírása

XslTransform sebezhető, ha nem megbízható bemeneten dolgozik. Egy támadás tetszőleges kódot futtathat.

Szabálysértések kijavítása

Cserélje le a XslTransform elemet a System.Xml.Xsl.XslCompiledTransform kérdésre. További útmutatásért lásd: [/dotnet/standard/data/xml/migrating-from-the-xsltransform-class].

Mikor kell letiltani a figyelmeztetéseket?

Az XslTransform objektum-, XSLT-stíluslapok és XML-forrásadatok mind megbízható forrásokból származnak.

Figyelmeztetés mellőzése

Ha csak egyetlen szabálysértést szeretne letiltani, adjon hozzá előfeldolgozási irányelveket a forrásfájlhoz a szabály letiltásához és újbóli engedélyezéséhez.

#pragma warning disable CA5374
// The code that's violating the rule is on this line.
#pragma warning restore CA5374

Ha le szeretné tiltani egy fájl, mappa vagy projekt szabályát, állítsa annak súlyosságát none a konfigurációs fájlban.

[*.{cs,vb}]
dotnet_diagnostic.CA5374.severity = none

További információ: Kódelemzési figyelmeztetések letiltása.

Példák pszeudokódokra

Megsértése

A következő pszeudokód-minta jelenleg a szabály által észlelt mintát szemlélteti.

using System;
using System.Xml;
using System.Xml.XPath;
using System.Xml.Xsl;

namespace TestForXslTransform
{
    class Program
    {
        static void Main(string[] args)
        {
            // Create a new XslTransform object.
            XslTransform xslt = new XslTransform();

            // Load the stylesheet.
            xslt.Load("https://server/favorite.xsl");

            // Create a new XPathDocument and load the XML data to be transformed.
            XPathDocument mydata = new XPathDocument("inputdata.xml");

            // Create an XmlTextWriter which outputs to the console.
            XmlWriter writer = new XmlTextWriter(Console.Out);

            // Transform the data and send the output to the console.
            xslt.Transform(mydata, null, writer, null);
        }
    }
}

Megoldás

using System.Xml;
using System.Xml.Xsl;

namespace TestForXslTransform
{
    class Program
    {
        static void Main(string[] args)
        {
            // Default XsltSettings constructor disables the XSLT document() function
            // and embedded script blocks.
            XsltSettings settings = new XsltSettings();

            // Execute the transform.
            XslCompiledTransform xslt = new XslCompiledTransform();
            xslt.Load("https://server/favorite.xsl", settings, new XmlUrlResolver());
            xslt.Transform("inputdata.xml", "outputdata.html");
        }
    }
}