CA3077: Nem biztonságos feldolgozás az API-tervezésben, az XML-dokumentum és az XML-szövegolvasóban
Tulajdonság | Érték |
---|---|
Szabályazonosító | CA3077 |
Cím | Nem biztonságos feldolgozás az API-tervezésben, AZ XML-dokumentum és az XML-szövegolvasóban |
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
Ha XMLDocumentből és XMLTextReaderből származó API-t tervez, ügyeljen rá DtdProcessing. A nem biztonságos DTDProcessing-példányok használata külső entitásforrásokra való hivatkozáskor vagy feloldásakor, illetve az XML-ben nem biztonságos értékek beállításakor információ felfedéséhez vezethet.
Szabály leírása
A dokumentumtípus-definíció (DTD) egyike annak a két módszernek, amelyekkel az XML-elemzők meghatározhatják egy dokumentum érvényességét a World Wide Web Consortium (W3C) Extensible Markup Language (XML) 1.0 által meghatározottak szerint. Ez a szabály olyan tulajdonságokat és példányokat keres, amelyek nem megbízható adatokat fogadnak el, hogy figyelmeztessék a fejlesztőket az esetleges információfeltárási fenyegetésekre, amelyek szolgáltatásmegtagadási (DoS-) támadásokat eredményezhetnek. Ez a szabály a következő esetekben aktiválódik:
XmlDocument vagy XmlTextReader az osztályok alapértelmezett feloldóértékeket használnak a DTD-feldolgozáshoz.
Nincs konstruktor definiálva az XmlDocument vagy XmlTextReader származtatott osztályokhoz, vagy nem használ biztonságos értéket.XmlResolver
Szabálysértések kijavítása
Az útvonaladatok felfedésének elkerülése érdekében az XmlTextReader-kivételek helyes elfogása és feldolgozása.
XmlResolver XmlSecureResolverhelyett használja az XmlTextReader által elérhető erőforrások korlátozását.
Mikor kell letiltani a figyelmeztetéseket?
Hacsak nem biztos abban, hogy a bemenet megbízható forrásból származik, ne tiltsa le a figyelmeztetés egyik szabályát sem.
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 CA3077
// The code that's violating the rule is on this line.
#pragma warning restore CA3077
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.CA3077.severity = none
További információ: Kódelemzési figyelmeztetések letiltása.
Példák pszeudokódokra
Megsértése
using System;
using System.Xml;
namespace TestNamespace
{
class TestClass : XmlDocument
{
public TestClass () {} // warn
}
class TestClass2 : XmlTextReader
{
public TestClass2() // warn
{
}
}
}
Megoldás
using System;
using System.Xml;
namespace TestNamespace
{
class TestClass : XmlDocument
{
public TestClass ()
{
XmlResolver = null;
}
}
class TestClass2 : XmlTextReader
{
public TestClass2()
{
XmlResolver = null;
}
}
}
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: