CA5366: Použití Třídy XmlReader pro čtení XML datové sady
Vlastnost | Hodnota |
---|---|
ID pravidla | CA5366 |
Název | Pro DataSet Read XML použijte XmlReader. |
Kategorie | Zabezpečení |
Oprava způsobující chybu nebo chybu způsobující chybu | Nenarušující |
Povoleno ve výchozím nastavení v .NET 9 | No |
Příčina
Definice typu dokumentu (DTD) definuje strukturu a právní prvky a atributy dokumentu XML. Odkazování na DTD z externího prostředku může způsobit potenciální útoky doS (DoS). Většina čtenářů nemůže zakázat zpracování DTD a omezit načítání externích odkazů s výjimkou System.Xml.XmlReader. Použití těchto dalších čtenářů k načtení XML jedním z následujících metod aktivuje toto pravidlo:
Popis pravidla
System.Data.DataSet Použití ke čtení XML s nedůvěryhodnými daty může načíst nebezpečné externí odkazy, které by měly být omezeny pomocí XmlReader zabezpečeného překladače nebo se zakázaným zpracováním DTD.
Jak opravit porušení
Použití XmlReader nebo jeho odvozené třídy ke čtení XML.
Kdy potlačit upozornění
Potlačit upozornění z tohoto pravidla při práci s důvěryhodným zdrojem dat.
Potlačení upozornění
Pokud chcete pouze potlačit jedno porušení, přidejte do zdrojového souboru direktivy preprocesoru, abyste pravidlo zakázali a znovu povolili.
#pragma warning disable CA5366
// The code that's violating the rule is on this line.
#pragma warning restore CA5366
Pokud chcete pravidlo pro soubor, složku nebo projekt zakázat, nastavte jeho závažnost v none
konfiguračním souboru.
[*.{cs,vb}]
dotnet_diagnostic.CA5366.severity = none
Další informace naleznete v tématu Jak potlačit upozornění analýzy kódu.
Příklady pseudokódu
Porušení
using System.Data;
using System.IO;
public class ExampleClass
{
public void ExampleMethod()
{
new DataSet().ReadXml(new FileStream("xmlFilename", FileMode.Open));
}
}
Řešení
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)));
}
}