Partager via


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

  1. Créez un objet WebPermission.

    Dim myWebPermission As New WebPermission(PermissionState.None)
    
    WebPermission myWebPermission = new WebPermission(PermissionState.None);
    
  2. 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/");
    
  3. 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);
    
  4. 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

  1. Créez un objet XmlSecureResolver avec un jeu d'autorisations correct.

  2. 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;
    
  3. 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

  1. Créez un objet XmlSecureResolver avec un jeu d'autorisations correct.

  2. 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);
    

Voir aussi

Autres ressources

Sécurité et applications system.xml

Documents et données XML