Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
| 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 10 | 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. Zpracování schématu XML inline, jako XmlReader, má vlastnosti ProhibitDtd a ProcessInlineSchema nastaveny na "false" ve výchozím nastavení v .NET Framework od verze 4.0. Další možnosti, jako Streamje například , TextReadera 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;
...
public void TestMethod(Stream stream)
{
var obj = new XPathDocument(stream);
}
Řešení
using System.Xml;
using System.Xml.XPath;
...
public void TestMethod(XmlReader reader)
{
var obj = new XPathDocument(reader);
}