CA3061: Non aggiungere lo schema in base all'URL
Proprietà | valore |
---|---|
ID regola | CA3061 |
Title | Non aggiungere lo schema in base all'URL |
Categoria | Sicurezza |
La correzione causa un'interruzione o meno | Non causa un'interruzione |
Abilitato per impostazione predefinita in .NET 9 | No |
Causa
L'overload XmlUrlResolver
di XmlSchemaCollection.Add(String, String)
usa per specificare xml schema esterno sotto forma di URI. Se la stringa URI è tainted, può causare l'analisi di un XML Schema dannoso, che consente l'inclusione di bombe XML ed entità esterne dannose. Ciò potrebbe consentire a un utente malintenzionato di eseguire un attacco Denial of Service, divulgazione di informazioni o richiesta sul lato server falsa.
Descrizione regola
Non usare l'overload unsafe del Add
metodo perché può causare riferimenti esterni pericolosi.
Come correggere le violazioni
- Non usare
XmlSchemaCollection.Add(String, String)
.
Quando eliminare gli avvisi
Eliminare questa regola se si è certi che il codice XML non risolve riferimenti esterni pericolosi.
Eliminare un avviso
Se si vuole eliminare una singola violazione, aggiungere direttive del preprocessore al file di origine per disabilitare e quindi riabilitare la regola.
#pragma warning disable CA3061
// The code that's violating the rule is on this line.
#pragma warning restore CA3061
Per disabilitare la regola per un file, una cartella o un progetto, impostarne la gravità none
su nel file di configurazione.
[*.{cs,vb}]
dotnet_diagnostic.CA3061.severity = none
Per altre informazioni, vedere Come eliminare gli avvisi di analisi del codice.
Esempi di pseudo-codice
Violazione
Nell'esempio di pseudo-codice seguente viene illustrato il modello rilevato da questa regola.
Il tipo del secondo parametro è string
.
using System;
using System.Xml.Schema;
...
XmlSchemaCollection xsc = new XmlSchemaCollection();
xsc.Add("urn: bookstore - schema", "books.xsd");
Soluzione
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)));