Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
| Eigenschaft | Wert |
|---|---|
| Regel-ID | CA5366 |
| Titel | XmlReader zum Lesen von DataSet-XML verwenden |
| Kategorie | Security |
| Fix führt zu Unterbrechungen oder bleibt funktionsfähig | Untrennbar |
| Standardmäßig in .NET 10 aktiviert | Nein |
| Anwendbare Sprachen | C# und Visual Basic |
Ursache
Eine Dokumenttyp-Definition (DTD) definiert die Struktur und die rechtlichen Elemente und Attribute eines XML-Dokuments. Das verweisen auf eine DTD von einer externen Ressource könnte mögliche DoS-Angriffe (Denial of Service) verursachen. Die meisten Reader können die DTD-Verarbeitung nicht deaktivieren und das Laden externer Verweise beschränken, mit Ausnahme von System.Xml.XmlReader. Wenn Sie diese anderen Reader zum Laden von XML mit einer der folgenden Methoden verwenden, wird diese Regel ausgelöst:
Regelbeschreibung
Beim Lesen von XML mit nicht vertrauenswürdigen Daten mithilfe eines System.Data.DataSet-Elements können gefährliche externe Verweise geladen werden. Dies sollte eingeschränkt werden, indem ein XmlReader-Element mit einem sicheren Resolver oder mit deaktivierter DTD-Verarbeitung verwendet wird.
So beheben Sie Verstöße
Verwenden Sie XmlReader oder die davon abgeleiteten Klassen zum Lesen von XML.
Wann sollten Warnungen unterdrückt werden?
Unterdrücken Sie eine Warnung dieser Regel, wenn eine vertrauenswürdige Datenquelle verwendet wird.
Unterdrücken einer Warnung
Um nur eine einzelne Verletzung zu unterdrücken, fügen Sie der Quelldatei Präprozessoranweisungen hinzu, um die Regel zu deaktivieren und dann wieder zu aktivieren.
#pragma warning disable CA5366
// The code that's violating the rule is on this line.
#pragma warning restore CA5366
Um die Regel für eine Datei, einen Ordner oder ein Projekt zu deaktivieren, legen Sie den Schweregrad auf none in der Konfigurationsdatei fest.
[*.{cs,vb}]
dotnet_diagnostic.CA5366.severity = none
Weitere Informationen finden Sie unter Vorgehensweise: Unterdrücken von Codeanalyse-Warnungen.
Pseudocodebeispiele
Verletzung
using System.Data;
using System.IO;
public class ExampleClass
{
public void ExampleMethod()
{
new DataSet().ReadXml(new FileStream("xmlFilename", FileMode.Open));
}
}
Lösung
using System.Data;
using System.IO;
using System.Xml;
public class ExampleClass
{
public void ExampleMethod()
{
new DataSet().ReadXml(new XmlTextReader(new FileStream("xmlFilename", FileMode.Open)));
}
}