Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
| Właściwości | Wartość |
|---|---|
| Identyfikator reguły | CA5372 |
| Tytuł | Używaj elementu XmlReader dla elementu XPathDocument |
| Kategoria | Bezpieczeństwo |
| Poprawka powodująca niezgodność lub niezgodność | Niezgodność |
| Domyślnie włączone na platformie .NET 10 | Nie. |
Przyczyna
XPathDocument Utworzenie wystąpienia klasy bez XmlReader obiektu może potencjalnie prowadzić do odmowy usługi, ujawnienia informacji i ataków fałszerzowanych żądań po stronie serwera. Te ataki są włączane przez niezaufane przetwarzanie schematów DTD i XML, co umożliwia włączenie bomb XML i złośliwych jednostek zewnętrznych w formacie XML. Tylko w przypadku XmlReader , gdy można wyłączyć usługę DTD. Wbudowane przetwarzanie schematu XML ma XmlReaderProhibitDtd właściwość i ProcessInlineSchema ustawioną na wartość false domyślnie w programie .NET Framework, począwszy od wersji 4.0. Inne opcje, takie jak Stream, TextReaderi XmlSerializationReader nie mogą wyłączyć przetwarzania DTD.
Opis reguły
Przetwarzanie kodu XML z niezaufanych danych może ładować niebezpieczne odwołania zewnętrzne, które mogą być ograniczone przy użyciu modułu XmlReader z bezpiecznym rozpoznawaniem lub z wyłączonym przetwarzaniem DTD. Ta reguła wykrywa kod, który używa XPathDocument klasy i nie przyjmuje XmlReader go jako parametru konstruktora.
Jak naprawić naruszenia
Użyj XPathDocument(XmlReader, *) konstruktorów.
Kiedy pomijać ostrzeżenia
To ostrzeżenie można potencjalnie pominąć, jeśli XPathDocument obiekt jest używany do przetwarzania pliku XML pochodzącego z zaufanego źródła i dlatego nie można go manipulować.
Pomijanie ostrzeżenia
Jeśli chcesz po prostu pominąć pojedyncze naruszenie, dodaj dyrektywy preprocesora do pliku źródłowego, aby wyłączyć, a następnie ponownie włączyć regułę.
#pragma warning disable CA5372
// The code that's violating the rule is on this line.
#pragma warning restore CA5372
Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none w pliku konfiguracji.
[*.{cs,vb}]
dotnet_diagnostic.CA5372.severity = none
Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia dotyczące analizy kodu.
Przykłady przykładów kodu przykładowego
Naruszenie
Poniższy przykład pseudo-kodu ilustruje wzorzec wykryty przez tę regułę.
Typem pierwszego parametru parametru XPathDocument nie XmlReaderjest .
using System.IO;
using System.Xml.XPath;
...
public void TestMethod(Stream stream)
{
var obj = new XPathDocument(stream);
}
Rozwiązanie
using System.Xml;
using System.Xml.XPath;
...
public void TestMethod(XmlReader reader)
{
var obj = new XPathDocument(reader);
}