Megosztás a következőn keresztül:


CA5372: Az XmlReader használata XPathDocumenthez

Tulajdonság Érték
Szabályazonosító CA5372
Cím Az XmlReader használata az XPathDocumenthez
Kategória Biztonság
A javítás kompatibilitástörő vagy nem törik Nem törés
Alapértelmezés szerint engedélyezve a .NET 8-ban Nem

Ok

XPathDocument Az objektum nélkül XmlReader példányosított osztály használata szolgáltatásmegtagadáshoz, információfeltáráshoz és kiszolgálóoldali kéréshamisítási támadásokhoz vezethet. Ezeket a támadásokat nem megbízható DTD- és XML-sémafeldolgozás teszi lehetővé, amely lehetővé teszi XML-bombák és rosszindulatú külső entitások XML-fájlba való felvételét. Csak a XmlReader DTD letiltása lehetséges. Beágyazott XML-sémafeldolgozás, ahogy XmlReader a tulajdonság és ProcessInlineSchema a ProhibitDtd tulajdonság alapértelmezés szerint hamis értékre van állítva .NET-keretrendszer 4.0-s verziótól kezdve. A többi lehetőség, például Streama , TextReaderés XmlSerializationReader nem tilthatja le a DTD-feldolgozást.

Szabály leírása

Az XML nem megbízható adatokból történő feldolgozása veszélyes külső hivatkozásokat tölthet be, amelyek biztonságos feloldóval vagy letiltott DTD-feldolgozással korlátozhatók XmlReader . Ez a szabály észleli az osztályt XPathDocument használó és konstruktorparaméterként nem használt XmlReader kódot.

Szabálysértések kijavítása

Használjon XPathDocument(XmlReader, *) konstruktorokat.

Mikor kell letiltani a figyelmeztetéseket?

Ezt a figyelmeztetést letilthatja, ha az XPathDocument objektum egy megbízható forrásból származó XML-fájl feldolgozására szolgál, ezért nem módosítható.

Figyelmeztetés mellőzése

Ha csak egyetlen szabálysértést szeretne letiltani, adjon hozzá előfeldolgozási irányelveket a forrásfájlhoz a szabály letiltásához és újbóli engedélyezéséhez.

#pragma warning disable CA5372
// The code that's violating the rule is on this line.
#pragma warning restore CA5372

Ha le szeretné tiltani egy fájl, mappa vagy projekt szabályát, állítsa annak súlyosságát none a konfigurációs fájlban.

[*.{cs,vb}]
dotnet_diagnostic.CA5372.severity = none

További információ: Kódelemzési figyelmeztetések letiltása.

Példák pszeudokódokra

Megsértése

Az alábbi pszeudokód-minta a szabály által észlelt mintát mutatja be. Az első paraméter XPathDocument típusa nem XmlReader.

using System.IO;
using System.Xml.XPath;
...
var obj = new XPathDocument(stream);

Megoldás

using System.Xml;
using System.Xml.XPath;
...
public void TestMethod(XmlReader reader)
{
var obj = new XPathDocument(reader);
}