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ó | 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 9-ben | Nem |
Ok
A nem megbízható XML-bemenetek objektum nélküli XmlSchema.Read példányosításával XmlReader
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 ProhibitDtd
a ProcessInlineSchema
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 Stream
a , 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 XmlSchema.Read észleli a XmlReader
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és
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);
}