Procédure : utilisation de la classe XmlSecureResolver
La classe XmlSecureResolver permet de sécuriser un autre objet XmlResolver en englobant l'objet XmlResolver et en limitant les ressources auxquelles la classe XmlResolver sous-jacente a accès. Par exemple, la classe XmlSecureResolver peut refuser l'accès à des zones ou sites Internet particuliers.
Pour limiter l'accès à l'aide d'une URL
Créez un objet XmlSecureResolver qui permet uniquement d'accéder à votre site intranet local.
Dim myResolver As New XmlSecureResolver(New XmlUrlResolver(), "http://myLocalSite/")
XmlSecureResolver myResolver = new XmlSecureResolver(new XmlUrlResolver(), "http://myLocalSite/");
Pour limiter l'accès à l'aide d'un jeu d'autorisations
Créez un objet WebPermission.
Dim myWebPermission As New WebPermission(PermissionState.None)
WebPermission myWebPermission = new WebPermission(PermissionState.None);
N'autorisez l'accès qu'aux deux URL suivantes.
myWebPermission.AddPermission(NetworkAccess.Connect, "https://www.contoso.com/") myWebPermission.AddPermission(NetworkAccess.Connect, "http://litwareinc.com/data/")
myWebPermission.AddPermission(NetworkAccess.Connect,"https://www.contoso.com/"); myWebPermission.AddPermission(NetworkAccess.Connect,"http://litwareinc.com/data/");
Ajoutez les autorisations Web à l'objet PermissionSet.
Dim myPermissions As New PermissionSet(PermissionState.None) myPermissions.AddPermission(myWebPermission)
PermissionSet myPermissions = new PermissionSet(PermissionState.None); myPermissions.AddPermission(myWebPermission);
Créez un objet XmlSecureResolver à l'aide du jeu d'autorisations.
Dim myResolver As New XmlSecureResolver(New XmlUrlResolver(), myPermissions)
XmlSecureResolver myResolver = new XmlSecureResolver(new XmlUrlResolver(), myPermissions);
Pour limiter l'accès à l'aide de preuves
Vous pouvez limiter l'accès à l'aide de l'objet Evidence. L'objet Evidence permet de créer l'objet PermissionSet appliqué à l'objet XmlResolver sous-jacent. L'objet XmlSecureResolver appelle la méthode PermitOnly de l'objet PermissionSet créé avant l'ouverture de ressources.
La liste suivante récapitule des scénarios possibles et le type de preuve à fournir pour chaque scénario.
Vous travaillez dans un environnement de niveau de confiance total :
Utilisez votre assembly pour créer la preuve.
Dim myEvidence As Evidence = Me.GetType().Assembly.Evidence Dim myResolver As XmlSecureResolver myResolver = New XmlSecureResolver(New XmlUrlResolver(), myEvidence)
Evidence myEvidence = this.GetType().Assembly.Evidence; XmlSecureResolver myResolver; myResolver = new XmlSecureResolver(new XmlUrlResolver(), myEvidence);
Vous travaillez dans un environnement de niveau de confiance partiel et des codes ou des données proviennent d'une source externe. Vous connaissez l'origine de la source externe et possédez un URI vérifiable :
Utilisez l'URI pour créer la preuve.
Dim myEvidence As Evidence = XmlSecureResolver.CreateEvidenceForUrl(sourceURI) Dim myResolver As New XmlSecureResolver(New XmlUrlResolver(), myEvidence)
Evidence myEvidence = XmlSecureResolver.CreateEvidenceForUrl(sourceURI); XmlSecureResolver myResolver = new XmlSecureResolver(new XmlUrlResolver(), myEvidence);
Vous travaillez dans un environnement de niveau de confiance partiel et des codes ou des données proviennent d'une source externe dont vous ne connaissez pas l'origine :
Définissez le paramètre evidence sur null. Ainsi, aucun accès aux ressources n'est autorisé.
-ou-
Si votre application nécessite un accès aux ressources, demandez une preuve à l'appelant.
Utilisation de XmlSecureResolver pour résoudre des ressources XML
La classe XmlUrlResolver constitue le programme de résolution par défaut de toutes les classes dans l'espace de noms System.Xml. Elle permet de charger des documents XML, de résoudre des ressources externes (entités, DTD ou schémas) et d'importer ou d'inclure des directives.
Vous pouvez ignorer ceci en spécifiant l'objet XmlResolver à utiliser. Spécifier un objet XmlSecureResolver permet de restreindre les ressources auxquelles l'objet XmlResolver sous-jacent peut accéder.
Pour créer un objet XmlReader qui utilise un objet XmlSecureResolver
Créez un objet XmlSecureResolver avec un jeu d'autorisations correct.
Créez un objet XmlReaderSettings qui utilise l'objet XmlSecureResolver.
Dim settings As New XmlReaderSettings() settings.XmlResolver = myResolver
XmlReaderSettings settings = new XmlReaderSettings(); settings.XmlResolver = myResolver;
Utilisez l'objet XmlReaderSettings pour créer l'objet XmlReader.
Dim reader As XmlReader = XmlReader.Create("books.xml", settings)
XmlReader reader = XmlReader.Create("books.xml", settings);
Pour utiliser l'objet XmlSecureResolver pour charger une feuille de style XSLT
Créez un objet XmlSecureResolver avec un jeu d'autorisations correct.
Transmettez l'objet XmlSecureResolver à la méthode Load.
Dim xslt As New XslCompiledTransform() xslt.Load("https://serverName/data/xsl/sort.xsl", Nothing, myResolver)
XslCompiledTransform xslt = new XslCompiledTransform(); xslt.Load("https://serverName/data/xsl/sort.xsl", null, myResolver);