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


CA3061: Ne adjon hozzá sémát URL-cím alapján

Tulajdonság Érték
Szabályazonosító CA3061
Cím Ne adjon hozzá sémát URL-cím alapján
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

XmlSchemaCollection.Add(String, String) A túlterhelés a külső XML-séma URI formájában történő megadására használhatóXmlUrlResolver. Ha az URI-sztring el van süllyesztve, az rosszindulatú XML-séma elemzéséhez vezethet, amely lehetővé teszi XML-bombák és rosszindulatú külső entitások felvételét. Ez lehetővé teheti, hogy a rosszindulatú támadó szolgáltatásmegtagadást, információfeltárást vagy kiszolgálóoldali kéréshamisítási támadást hajthasson végre.

Szabály leírása

Ne használja a módszer nem biztonságos túlterhelését Add , mert veszélyes külső hivatkozásokat okozhat.

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

  • Ne használja XmlSchemaCollection.Add(String, String).

Mikor kell letiltani a figyelmeztetéseket?

Tiltsa le ezt a szabályt, ha biztos abban, hogy az XML nem oldja fel a veszélyes külső hivatkozásokat.

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 CA3061
// The code that's violating the rule is on this line.
#pragma warning restore CA3061

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.CA3061.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. A második paraméter típusa.string

using System;
using System.Xml.Schema;
...
XmlSchemaCollection xsc = new XmlSchemaCollection();
xsc.Add("urn: bookstore - schema", "books.xsd");

Megoldás

using System;
using System.IO;
using System.Xml;
using System.Xml.Schema;
...
XmlSchemaCollection xsc = new XmlSchemaCollection();
xsc.Add("urn: bookstore - schema", new XmlTextReader(new FileStream(""xmlFilename"", FileMode.Open)));