Condividi tramite


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 10 No

Causa

L'overload XmlSchemaCollection.Add(String, String) di XmlUrlResolver 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)));