CA5366: Az XmlReader használata a DataSet XML olvasásához

Tulajdonság Érték
Szabályazonosító CA5366
Cím Az XmlReader használata adathalmaz olvasási XML-fájljaihoz
Kategória Biztonság
A javítás romboló vagy nem romboló Nem törhető
Alapértelmezés szerint engedélyezve a .NET 10-ben Nem
Alkalmazandó nyelvek C# és Visual Basic

Ok

A dokumentumtípus-definíció (DTD) meghatározza egy XML-dokumentum struktúráját és jogi elemeit és attribútumait. Ha egy külső erőforrásból származó DTD-re hivatkozik, lehetséges szolgáltatásmegtagadási (DoS-) támadásokat okozhat. A legtöbb olvasó nem tudja letiltani a DTD-feldolgozást, és nem korlátozhatja a külső hivatkozások betöltését, kivéve a System.Xml.XmlReader. Az alábbi módszerek egyikével ezen más olvasókkal történő XML betöltése aktiválja ezt a szabályt.

Szabály leírása

System.Data.DataSet Ha nem megbízható adatokat tartalmazó XML-t olvas, veszélyes külső hivatkozásokat tölthet be, amelyeket biztonságos feloldóval vagy letiltott DTD-feldolgozással kell korlátozniXmlReader.

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

Xml olvasásához használja XmlReader vagy annak származtatott osztályait.

Mikor kell letiltani a figyelmeztetéseket?

A szabály figyelmeztetésének mellőzése megbízható adatforrások kezelésekor.

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 CA5366
// The code that's violating the rule is on this line.
#pragma warning restore CA5366

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.CA5366.severity = none

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

Példák pszeudokódokra

Megsértés

using System.Data;
using System.IO;

public class ExampleClass
{
    public void ExampleMethod()
    {
        new DataSet().ReadXml(new FileStream("xmlFilename", FileMode.Open));
    }
}

Megoldás

using System.Data;
using System.IO;
using System.Xml;

public class ExampleClass
{
    public void ExampleMethod()
    {
        new DataSet().ReadXml(new XmlTextReader(new FileStream("xmlFilename", FileMode.Open)));
    }
}