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