Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Property | Värde |
---|---|
Regel-ID | CA5372 |
Title | Använda XmlReader för XPathDocument |
Kategori | Säkerhet |
Korrigeringen är icke-bakåtkompatibel | Icke-icke-bryta |
Aktiverad som standard i .NET 9 | Nej |
Att använda klassen XPathDocument
som instansieras utan ett XmlReader
objekt kan potentiellt leda till överbelastningsattacker, avslöjande av information och förfalskningsattacker på serversidan. Dessa attacker aktiveras av obetrodd DTD- och XML-schemabearbetning, vilket möjliggör inkludering av XML-bomber och skadliga externa entiteter i XML-koden. Endast med XmlReader
är det möjligt att inaktivera DTD. Infogad XML-schemabearbetning som XmlReader
har ProhibitDtd
egenskapen och ProcessInlineSchema
inställd på false som standard i .NET Framework med början i version 4.0. De andra alternativen, till exempel Stream
, TextReader
och XmlSerializationReader
kan inte inaktivera DTD-bearbetning.
Bearbetning av XML från ej betrodda data kan läsa in farliga externa referenser, som kan begränsas med hjälp av en XmlReader
med en säker matchare eller med DTD-bearbetning inaktiverad. Den här regeln identifierar kod som använder XPathDocument
klassen och inte tar XmlReader
som konstruktorparameter.
Använd XPathDocument(XmlReader, *)
konstruktorer.
Du kan eventuellt ignorera den XPathDocument
här varningen om objektet används för att bearbeta en XML-fil som kommer från en betrodd källa och därför inte kan manipuleras.
Om du bara vill förhindra en enda överträdelse lägger du till förprocessordirektiv i källfilen för att inaktivera och aktiverar sedan regeln igen.
#pragma warning disable CA5372
// The code that's violating the rule is on this line.
#pragma warning restore CA5372
Om du vill inaktivera regeln för en fil, mapp eller ett projekt anger du dess allvarlighetsgrad till none
i konfigurationsfilen.
[*.{cs,vb}]
dotnet_diagnostic.CA5372.severity = none
Mer information finns i Så här utelämnar du kodanalysvarningar.
Följande pseudokodexempel illustrerar det mönster som identifierats av den här regeln.
Typen av den första parametern XPathDocument
för är inte XmlReader
.
using System.IO;
using System.Xml.XPath;
...
var obj = new XPathDocument(stream);
using System.Xml;
using System.Xml.XPath;
...
public void TestMethod(XmlReader reader)
{
var obj = new XPathDocument(reader);
}
Feedback om .NET
.NET är ett öppen källkod projekt. Välj en länk för att ge feedback: