Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
| Tulajdonság | Érték |
|---|---|
| Szabályazonosító | CA5372 |
| Cím | Az XmlReader használata az XPathDocumenthez |
| Kategória | Biztonság |
| A javítás romboló vagy nem romboló | Nem törhető |
| Alapértelmezés szerint engedélyezve a .NET 10-ben | Nem |
| Alkalmazandó nyelvek | C# és Visual Basic |
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, mivel a XmlReader tulajdonságai, a ProhibitDtd és a ProcessInlineSchema, alapértelmezés szerint hamis értékre vannak állítva a .NET-keretrendszer 4.0-s verziójától kezdődően. 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és
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;
...
public void TestMethod(Stream stream)
{
var obj = new XPathDocument(stream);
}
Megoldás
using System.Xml;
using System.Xml.XPath;
...
public void TestMethod(XmlReader reader)
{
var obj = new XPathDocument(reader);
}