CA5366 : Utiliser XmlReader pour lire les données XML d’un jeu de données
Propriété | Value |
---|---|
Identificateur de la règle | CA5366 |
Titre | Utiliser XmlReader pour lire les données XML d’un jeu de données |
Catégorie | Sécurité |
Le correctif est cassant ou non cassant | Sans rupture |
Activé par défaut dans .NET 8 | Non |
Cause
Une définition de type de document (DTD) définit la structure et les éléments et attributs juridiques d’un document XML. La référence à une DTD à partir d’une ressource externe peut entraîner des attaques potentielles par déni de service (DoS). La plupart des lecteurs ne peuvent pas désactiver le traitement DTD et restreindre le chargement des références externes à l’exception de System.Xml.XmlReader. L’utilisation de ces autres lecteurs pour charger du code XML par l’une des méthodes suivantes déclenche cette règle :
Description de la règle
L’utilisation d’un System.Data.DataSet pour lire du code XML avec des données non approuvées peut charger des références externes dangereuses, qui doivent être restreintes à l’aide d’un XmlReader avec un programme de résolution sécurisé ou avec un traitement DTD désactivé.
Comment corriger les violations
Utilisez XmlReader ou ses classes dérivées pour lire du code XML.
Quand supprimer les avertissements
Supprimez un avertissement de cette règle lors du traitement d’une source de données approuvée.
Supprimer un avertissement
Si vous voulez supprimer une seule violation, ajoutez des directives de préprocesseur à votre fichier source pour désactiver et réactiver la règle.
#pragma warning disable CA5366
// The code that's violating the rule is on this line.
#pragma warning restore CA5366
Pour désactiver la règle sur un fichier, un dossier ou un projet, définissez sa gravité sur none
dans le fichier de configuration.
[*.{cs,vb}]
dotnet_diagnostic.CA5366.severity = none
Pour plus d’informations, consultez Comment supprimer les avertissements de l’analyse de code.
Exemples de pseudo-code
Violation
using System.Data;
using System.IO;
public class ExampleClass
{
public void ExampleMethod()
{
new DataSet().ReadXml(new FileStream("xmlFilename", FileMode.Open));
}
}
Solution
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)));
}
}