Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Lorsque vous utilisez les fonctionnalités de métadonnées dans Windows Communication Foundation (WCF), tenez compte des implications de sécurité de la publication, de la récupération et de l’utilisation des métadonnées de service.
Quand publier des métadonnées
Les services WCF ne publient pas les métadonnées par défaut. Pour publier des métadonnées pour un service WCF, vous devez activer explicitement la publication des métadonnées en ajoutant des points de terminaison de métadonnées à votre service (voir Métadonnées de publication). La publication des métadonnées désactivée réduit la surface d’attaque de votre service et réduit le risque de divulgation d’informations involontaires. Tous les services ne doivent pas publier les métadonnées. Si vous n’avez pas besoin de publier des métadonnées, envisagez de la désactiver. Notez que vous pouvez toujours générer des métadonnées et du code client directement à partir de vos assemblys de service à l’aide de l’outil utilitaire de métadonnées ServiceModel (Svcutil.exe). Pour plus d’informations sur l’utilisation de Svcutil.exe pour exporter des métadonnées, consultez Guide pratique pour utiliser Svcutil.exe pour exporter des métadonnées à partir du code de service compilé.
Publication de métadonnées à l'aide d'une liaison sécurisée
Les liaisons de métadonnées par défaut que WCF fournit ne sont pas sécurisées et autorisent l’accès anonyme aux métadonnées. Les métadonnées de service qu’un service WCF publie contiennent une description détaillée du service et peuvent contenir intentionnellement ou involontairement des informations sensibles. Par exemple, les métadonnées de service peuvent contenir des informations sur les opérations d’infrastructure qui n’étaient pas destinées à être diffusées publiquement. Pour protéger les métadonnées de service contre l’accès non autorisé, vous pouvez utiliser une liaison sécurisée pour votre point de terminaison de métadonnées. Les points de terminaison de métadonnées répondent aux requêtes HTTP/GET qui peuvent utiliser SSL (Secure Sockets Layer) pour sécuriser les métadonnées. Pour plus d’informations, consultez Guide pratique pour sécuriser les points de terminaison de métadonnées.
La sécurisation de vos points de terminaison de métadonnées permet également aux demandeurs de récupérer en toute sécurité les métadonnées du service sans risque de falsification ou d’usurpation d’identité.
Utilisation de métadonnées approuvées uniquement
Vous pouvez utiliser des métadonnées de service pour construire automatiquement les composants runtime requis pour appeler le service. Vous pouvez également utiliser des métadonnées au moment du design pour développer une application cliente ou au moment de l’exécution pour mettre à jour dynamiquement la liaison qu’un client utilise pour appeler un service.
Les métadonnées de service peuvent être falsifiées ou usurpées lorsqu’elles sont récupérées de manière non sécurisée. Les métadonnées falsifiées peuvent rediriger votre client vers un service malveillant, contenir des paramètres de sécurité compromis ou contenir des structures XML malveillantes. Les documents de métadonnées peuvent être volumineux et sont souvent enregistrés dans le système de fichiers. Pour vous protéger contre la falsification et l’usurpation d’identité, utilisez une connexion sécurisée pour demander des métadonnées de service, si elle est disponible.
Utilisation de techniques sécurisées pour le traitement des métadonnées
Les métadonnées de service sont fréquemment récupérées à partir d’un service sur un réseau à l’aide de protocoles standardisés tels que WS-MetadataExchange (MEX). De nombreux formats de métadonnées incluent des mécanismes de référencement pour pointer vers des métadonnées supplémentaires. Le MetadataExchangeClient type traite automatiquement les références pour vous dans les documents WSDL (Web Services Description Language), le schéma XML et les documents MEX. La taille de l’objet MetadataSet créé à partir des métadonnées récupérées est directement proportionnelle à la MaximumResolvedReferences valeur de l’instance MetadataExchangeClient utilisée et à la MaxReceivedMessageSize valeur de la liaison utilisée par cette MetadataExchangeClient instance. Définissez ces quotas sur les valeurs appropriées, comme indiqué par votre scénario.
Dans WCF, les métadonnées de service sont traitées en tant que XML. Lors du traitement de documents XML, les applications doivent se protéger contre les structures XML malveillantes. Utilisez le XmlDictionaryReader avec les quotas appropriés lors du traitement XML et définissez également la propriété DtdProcessing à Prohibit.
Le système de métadonnées dans WCF est extensible et les extensions de métadonnées peuvent être inscrites dans votre fichier de configuration d’application (voir Extension du système de métadonnées). Les extensions de métadonnées peuvent exécuter du code arbitraire. Vous devez donc protéger votre fichier de configuration d’application avec les listes de contrôle d’accès appropriées (ACL) et inscrire uniquement les implémentations d’extension de métadonnées approuvées.
Validation des clients générés
Lors de la génération de code client à partir de métadonnées récupérées à partir d’une source non approuvée, validez le code client généré pour vous assurer que le client généré est conforme aux stratégies de sécurité de vos applications clientes. Vous pouvez utiliser un comportement de validation pour vérifier les paramètres sur votre liaison cliente ou inspecter visuellement le code généré par les outils. Pour obtenir un exemple d’implémentation d’un client qui valide les comportements, consultez Validation du client.
Protection des fichiers de configuration d’application
Le fichier de configuration d’application d’un service peut contrôler comment et si les métadonnées sont publiées. Il est judicieux de protéger le fichier de configuration de l’application avec les listes de contrôle d’accès appropriées (ACL) pour garantir qu’un attaquant ne peut pas modifier ces paramètres.