Comment faire pour configurer l'analyseur XML pour désactiver entité externe résolution en c#
var xDoc = XDocument.Load(fileName);
Je suis en utilisant le code ci-dessus dans une fonction pour charger un fichier XML. La fonctionnalité sage de sa fonctionne bien mais il montre suivantes Veracode Faille après Veracode vérifier.
Description
Le produit de processus, un document XML peut contenir des entités XML avec des Url qui correspondent à des documents à l'extérieur
de la sphère de contrôle, provoquant le produit d'incorporer des documents incorrects dans son résultat. Par défaut, l'
Entité XML résolveur va tenter de résoudre et de récupérer des références externes. Si contrôlé par l'attaquant XML peut être
soumis à l'une de ces fonctions, alors l'attaquant peut accéder à de l'information sur un réseau interne, local
système de fichiers ou d'autres données sensibles. Ceci est connu comme un XML Entité externe (XXE) attaque.
Recommandations
Configurer l'analyseur XML pour désactiver entité externe de résolution.
Ce que je dois faire pour le résoudre.
Vous devez vous connecter pour publier un commentaire.
Mettre en œuvre une coutume
XmlResolver
et de l'utiliser pour la lecture du XML. Par défaut, leXmlUrlResolver
est utilisé, qui télécharge automatiquement les résolu références.Et de l'utiliser comme ceci:
<!DOCTYPE myxml SYSTEM "MyDTD.dtd">
, leGetEntity
est appelée avecabsoluteUri == "MyDTD.dtd"
, et vous devez retourner un ruisseau avec son contenu. Vous pouvez simplement retourner un vide DTD donc les entités définies dans la DTD restera en suspens.Si vous n'êtes pas en utilisant entité externe références dans votre XML, vous pouvez désactiver l'outil de résolution par la valeur nulle, d' Comment prévenir XXE attaque ( XmlDocument dans .net)
Si vous attendez le document contienne des références d'entité, alors vous aurez besoin pour créer un résolveur personnalisé et blanche ce que vous attendez. Surtout, toutes les références à des sites web que vous ne contrôlez pas.