CA5372: Použití Třídy XmlReader pro XPathDocument
Vlastnost | Hodnota |
---|---|
ID pravidla | CA5372 |
Název | Použít XmlReader pro XPathDocument |
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 8 | No |
Příčina
XPathDocument
Použití instance třídy bez objektu XmlReader
může potenciálně vést k útoku na odepření služby, zpřístupnění informací a útok na útok typu útok na padělání požadavků na straně serveru. Tyto útoky jsou povoleny nedůvěryhodným zpracováním schématU DTD a XML, což umožňuje zahrnutí bomb XML a škodlivých externích entit do XML. DTD je možné zakázat pouze s XmlReader
použitím. Inline XML schema processing as XmlReader
has the ProhibitDtd
and ProcessInlineSchema
property set to false by default in .NET Framework starting in version 4.0. Další možnosti, jako Stream
je například , TextReader
a XmlSerializationReader
nelze zakázat zpracování DTD.
Popis pravidla
Zpracování XML z nedůvěryhodných dat může načíst nebezpečné externí odkazy, které je možné omezit pomocí zabezpečeného XmlReader
překladače nebo se zakázaným zpracováním DTD. Toto pravidlo zjistí kód, který používá XPathDocument
třídu, a nebere XmlReader
jako parametr konstruktoru.
Jak opravit porušení
Použijte XPathDocument(XmlReader, *)
konstruktory.
Kdy potlačit upozornění
Toto upozornění můžete potlačit, pokud XPathDocument
se objekt používá ke zpracování souboru XML, který pochází z důvěryhodného zdroje, a proto nelze manipulovat.
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 CA5372
// The code that's violating the rule is on this line.
#pragma warning restore CA5372
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.CA5372.severity = none
Další informace naleznete v tématu Jak potlačit upozornění analýzy kódu.
Příklady pseudokódu
Porušení
Následující ukázka pseudokódu znázorňuje vzor zjištěný tímto pravidlem.
Typ prvního parametru XPathDocument
není XmlReader
.
using System.IO;
using System.Xml.XPath;
...
var obj = new XPathDocument(stream);
Řešení
using System.Xml;
using System.Xml.XPath;
...
public void TestMethod(XmlReader reader)
{
var obj = new XPathDocument(reader);
}