Share via


CA3061: Schema niet toevoegen op URL

Eigenschappen Weergegeven als
Regel-id CA3061
Titel Schema niet toevoegen op URL
Categorie Beveiliging
Oplossing is brekend of niet-brekend Niet-brekend
Standaard ingeschakeld in .NET 9 Nee

Oorzaak

Overbelasting van XmlSchemaCollection.Add(String, String) wordt gebruikt XmlUrlResolver om een extern XML-schema op te geven in de vorm van een URI. Als de URI-tekenreeks is besmet, kan dit leiden tot het parseren van een schadelijk XML-schema, waardoor XML-bommen en schadelijke externe entiteiten kunnen worden opgenomen. Hierdoor kan een kwaadwillende aanvaller een denial of service- of openbaarmaking van informatie of een aanval op aanvraagvervalsing aan de serverzijde uitvoeren.

Beschrijving van regel

Gebruik de onveilige overbelasting van de Add methode niet omdat deze gevaarlijke externe verwijzingen kan veroorzaken.

Schendingen oplossen

  • Niet gebruiken XmlSchemaCollection.Add(String, String).

Wanneer waarschuwingen onderdrukken

Deze regel onderdrukken als u zeker weet dat uw XML geen gevaarlijke externe verwijzingen oplost.

Een waarschuwing onderdrukken

Als u slechts één schending wilt onderdrukken, voegt u preprocessorrichtlijnen toe aan uw bronbestand om de regel uit te schakelen en vervolgens opnieuw in te schakelen.

#pragma warning disable CA3061
// The code that's violating the rule is on this line.
#pragma warning restore CA3061

Als u de regel voor een bestand, map of project wilt uitschakelen, stelt u de ernst none ervan in op het configuratiebestand.

[*.{cs,vb}]
dotnet_diagnostic.CA3061.severity = none

Zie Codeanalysewaarschuwingen onderdrukken voor meer informatie.

Voorbeelden van pseudocode

Schending

Het volgende pseudocodevoorbeeld illustreert het patroon dat door deze regel is gedetecteerd. Het type van de tweede parameter is string.

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

Oplossing

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