CA3061: Schema niet toevoegen via URL

Eigenschap Waarde
Regel-id CA3061
Titel Schema niet toevoegen via URL
Categorie Beveiliging
Fix kan brekend of niet-brekend zijn Niet-brekend
Standaard ingeschakeld in .NET 10 Nee
Toepasselijke talen C# en Visual Basic

Oorzaak

Overbelasting van XmlSchemaCollection.Add(String, String) maakt gebruik van XmlUrlResolver om een extern XML-schema als een URI op te geven. 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-aanval, informatielek of server-side request forgery-aanval uitvoeren.

Beschrijving van regel

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

Hoe schendingen op te lossen

  • Gebruik XmlSchemaCollection.Add(String, String) niet.

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 voor meer informatie Hoe codeanalysewaarschuwingen te onderdrukken.

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