CA3061: Lägg inte till schema efter URL
Property | Värde |
---|---|
Regel-ID | CA3061 |
Title | Lägg inte till schema efter URL |
Kategori | Säkerhet |
Korrigeringen är icke-bakåtkompatibel | Icke-icke-bryta |
Aktiverad som standard i .NET 9 | Nej |
Orsak
Överlagring av XmlSchemaCollection.Add(String, String)
används XmlUrlResolver
för att ange ett externt XML-schema i form av en URI. Om URI-strängen är fläckad kan det leda till parsning av ett skadligt XML-schema, vilket möjliggör inkludering av XML-bomber och skadliga externa entiteter. Detta kan göra det möjligt för en angripare att utföra en överbelastningsattack, informationsutlämnande eller förfalskningsattack på serversidan.
Regelbeskrivning
Använd inte den osäkra överlagringen Add
av metoden eftersom den kan orsaka farliga externa referenser.
Så här åtgärdar du överträdelser
- Använd inte
XmlSchemaCollection.Add(String, String)
.
När du ska ignorera varningar
Ignorera den här regeln om du är säker på att xml-koden inte löser farliga externa referenser.
Ignorera en varning
Om du bara vill förhindra en enda överträdelse lägger du till förprocessordirektiv i källfilen för att inaktivera och aktiverar sedan regeln igen.
#pragma warning disable CA3061
// The code that's violating the rule is on this line.
#pragma warning restore CA3061
Om du vill inaktivera regeln för en fil, mapp eller ett projekt anger du dess allvarlighetsgrad till none
i konfigurationsfilen.
[*.{cs,vb}]
dotnet_diagnostic.CA3061.severity = none
Mer information finns i Så här utelämnar du kodanalysvarningar.
Exempel på pseudokod
Kränkning
Följande pseudokodexempel illustrerar det mönster som identifierats av den här regeln.
Den andra parameterns typ är string
.
using System;
using System.Xml.Schema;
...
XmlSchemaCollection xsc = new XmlSchemaCollection();
xsc.Add("urn: bookstore - schema", "books.xsd");
Lösning
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)));