CA5371: Použití Třídy XmlReader pro čtení schématu
Vlastnost | Hodnota |
---|---|
ID pravidla | CA5371 |
Název | Použít XmlReader pro čtení schématu |
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
Zpracování nedůvěryhodného vstupu XML s XmlSchema.Read instancí bez objektu XmlReader
může potenciálně vést k útoku na odepření služby, zpřístupnění informací a útoků na požadavek 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í nedůvěryhodných schémat DTD a XML může povolit načítání nebezpečných externích odkazů.
XmlReader
Použití se zabezpečeným překladačem nebo se zakázaným zpracováním vloženého schématu DTD a XML to omezuje. Toto pravidlo detekuje kód, který používá metodu XmlSchema.Read bez XmlReader
parametru.
Jak opravit porušení
Použijte XmlSchema.Read(XmlReader, *)
přetížení.
Kdy potlačit upozornění
Toto upozornění můžete potenciálně potlačit, pokud XmlSchema.Read se metoda vždy používá ke zpracování XML pocházejícího z důvěryhodného zdroje, a proto nelze manipulovat s.
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 CA5371
// The code that's violating the rule is on this line.
#pragma warning restore CA5371
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.CA5371.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 XmlSchema.Read není XmlReader
.
using System.IO;
using System.Xml.Schema;
...
public void TestMethod(Stream stream, ValidationEventHandler validationEventHandler)
{
XmlSchema.Read(stream, validationEventHandler);
}
Řešení
using System.IO;
using System.Xml.Schema;
...
public void TestMethod(XmlReader reader, ValidationEventHandler validationEventHandler)
{
XmlSchema.Read(reader, validationEventHandler);
}