Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
| Vlastnost | Hodnota |
|---|---|
| ID pravidla | CA3061 |
| Název | Nepřidávat schéma podle adresy URL |
| Kategorie | Zabezpečení |
| Oprava způsobující chybu nebo chybu způsobující chybu | Nenarušující |
| Povoleno ve výchozím nastavení v .NET 10 | No |
Příčina
Přetížení používá XmlSchemaCollection.Add(String, String) k určení externího XmlUrlResolver schématu XML ve formě identifikátoru URI. Pokud je řetězec identifikátoru URI tainted, může vést k analýze škodlivého schématu XML, které umožňuje zahrnutí bomb XML a škodlivých externích entit. To by mohlo útočníkovi se zlými úmysly umožnit útok na odepření služby, zpřístupnění informací nebo útok na útok na straně serveru.
Popis pravidla
Nepoužívejte nebezpečné přetížení Add metody, protože může způsobit nebezpečné externí odkazy.
Jak opravit porušení
- Nepoužívejte
XmlSchemaCollection.Add(String, String).
Kdy potlačit upozornění
Potlačit toto pravidlo, pokud jste si jisti, že XML nerozloží nebezpečné externí odkazy.
Potlačení upozornění
Pokud chcete pouze potlačit jedno porušení, přidejte do zdrojového souboru direktivy preprocesoru, abyste pravidlo zakázali a znovu povolili.
#pragma warning disable CA3061
// The code that's violating the rule is on this line.
#pragma warning restore CA3061
Pokud chcete pravidlo pro soubor, složku nebo projekt zakázat, nastavte jeho závažnost v none konfiguračním souboru.
[*.{cs,vb}]
dotnet_diagnostic.CA3061.severity = none
Další informace naleznete v tématu Jak potlačit upozornění analýzy kódu.
Příklady pseudokódu
Porušení
Následující ukázka pseudokódu znázorňuje vzor zjištěný tímto pravidlem.
Druhý typ parametru je string.
using System;
using System.Xml.Schema;
...
XmlSchemaCollection xsc = new XmlSchemaCollection();
xsc.Add("urn: bookstore - schema", "books.xsd");
Řešení
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)));