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


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;
        }
    }
}