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


CA5370: Az XmlReader használata az olvasó ellenőrzéséhez

Tulajdonság Érték
Szabályazonosító CA5370
Cím Az XmlReader használata az olvasó ellenőrzéséhez
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 a nem megbízható XML-bemenetet objektum nélkül XmlReader példányosított osztálysal XmlValidatingReader ellenőrzi, az szolgáltatásmegtagadáshoz, információfeltáráshoz és kiszolgálóoldali kérelemhamisításhoz 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 ProhibitDtd tulajdonság alapértelmezés ProcessInlineSchema szerint be van állítva false a .NET-keretrendszer 4.0-s verziótól kezdve.

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é. Ez a veszélyes betöltés egy biztonságos feloldóval vagy a DTD és az XML beágyazott sémafeldolgozás letiltásával korlátozható XmlReader . Ez a szabály észleli az osztályt XmlValidatingReaderXmlReader konstruktorparaméter nélkül használó kódot.

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

  • Használat XmlValidatingReader(XmlReader) a következővel ProhibitDtd és ProcessInlineSchema a tulajdonságok beállítása: false.
  • A .NET-keretrendszer 2.0-tól XmlValidatingReader kezdődően elavultnak számít. Az érvényesítő olvasót példányosíthatja a következővel XmlReader.Create: .

Mikor kell letiltani a figyelmeztetéseket?

Ezt a figyelmeztetést letilthatja, ha a XmlValidatingReader rendszer mindig megbízható forrásból származó XML ellenőrzésére használja, 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 CA5370
// The code that's violating the rule is on this line.
#pragma warning restore CA5370

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.CA5370.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 XmlValidatingReader.XmlValidatingReader() típusa nem XmlReader.

using System;
using System.IO;
using System.Xml;
...
public void TestMethod(Stream xmlFragment, XmlNodeType fragType, XmlParserContext context)
{
    var obj = new XmlValidatingReader(xmlFragment, fragType, context);
}

Megoldás

using System;
using System.Xml;
...
public void TestMethod(XmlReader xmlReader)
{
    var obj = new XmlValidatingReader(xmlReader);
}