Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
| 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)));