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


CA5371: Az XmlReader használata sémaolvasáshoz

Tulajdonság Érték
Szabályazonosító CA5371
Cím Az XmlReader használata sémaolvasáshoz
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

A nem megbízható XML-bemenetek objektum nélküli XmlReader példányosításával XmlSchema.Read történő feldolgozása szolgáltatásmegtagadáshoz, információfelfedéshez é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

A nem megbízható DTD- és XML-sémák feldolgozása veszélyes külső hivatkozások betöltését teheti lehetővé. XmlReader A biztonságos feloldóval vagy a DTD-vel és az XML beágyazott sémafeldolgozással letiltott használata ezt korlátozza. Ez a szabály paraméter nélkül XmlReader észleli a XmlSchema.Read metódust használó kódot.

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

Használjon XmlSchema.Read(XmlReader, *) túlterhelést.

Mikor kell letiltani a figyelmeztetéseket?

Ezt a figyelmeztetést letilthatja, ha a XmlSchema.Read metódus mindig megbízható forrásból származó XML 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 CA5371
// The code that's violating the rule is on this line.
#pragma warning restore CA5371

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.CA5371.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 XmlSchema.Read típusa nem XmlReader.

using System.IO;
using System.Xml.Schema;
...
public void TestMethod(Stream stream, ValidationEventHandler validationEventHandler)
{
    XmlSchema.Read(stream, validationEventHandler);
}

Megoldás

using System.IO;
using System.Xml.Schema;
...
public void TestMethod(XmlReader reader, ValidationEventHandler validationEventHandler)
{
    XmlSchema.Read(reader, validationEventHandler);
}