Share via


Cómo: Utilizar la clase XmlSecureResolver

La clase XmlSecureResolver ayuda a proteger otro objeto XmlResolver conteniendo el objeto XmlResolver y restringiendo los recursos a los que tiene acceso el XmlResolver subyacente. Por ejemplo, la clase XmlSecureResolver puede prohibir el acceso a determinados sitios o zonas de Internet.

Para restringir el acceso con una URL

  • Cree un objeto XmlSecureResolver al que solo se le permita acceso al sitio de la intranet local.

    Dim myResolver As New XmlSecureResolver(New XmlUrlResolver(), "http://myLocalSite/") 
    
    XmlSecureResolver myResolver = new XmlSecureResolver(new XmlUrlResolver(), "http://myLocalSite/");
    

Para restringir el acceso con un conjunto de permisos

  1. Cree un objeto WebPermission.

    Dim myWebPermission As New WebPermission(PermissionState.None)
    
    WebPermission myWebPermission = new WebPermission(PermissionState.None);
    
  2. Solo permita el acceso a las siguientes dos URL.

    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. Agregue permisos web al objeto PermissionSet.

    Dim myPermissions As New PermissionSet(PermissionState.None)
    myPermissions.AddPermission(myWebPermission)
    
    PermissionSet myPermissions = new PermissionSet(PermissionState.None);
    myPermissions.AddPermission(myWebPermission);
    
  4. Cree un objeto XmlSecureResolver con el conjunto de permisos.

    Dim myResolver As New XmlSecureResolver(New XmlUrlResolver(), myPermissions)
    
    XmlSecureResolver myResolver = new XmlSecureResolver(new XmlUrlResolver(), myPermissions);
    

Para restringir el acceso utilizando evidencias

  • Puede restringir el acceso utilizando Evidence. Evidence se utiliza para crear el PermissionSet que se aplica al XmlResolver subyacente. XmlSecureResolver llama a PermitOnly en el PermissionSet creado antes de abrir cualquier recurso.

    En la siguiente lista se resumen algunas posibles situaciones y el tipo de evidencia que hay que proporcionar para cada una de ellas.

    • Está trabajando en un entorno de total confianza:

      utilice su ensamblado para crear la evidencia.

      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);
      
    • Está trabajando en un entorno de confianza parcial y hay código o datos que vienen de un origen externo. Conoce el origen externo y tiene un identificador URI comprobable:

      utilice el identificador URI para crear la evidencia.

      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);
      
    • Está trabajando en un entorno de confianza parcial y hay código o datos que vienen de un origen externo que no conoce:

      Establezca el parámetro evidence en null. De esta manera, no se permite el acceso a los recursos.

      -o-

      Si su aplicación necesita determinado acceso a los recursos, solicite evidencias a quien realiza la llamada.

Utilice XmlSecureResolver para resolver recursos XML

La clase XmlUrlResolver es la resolución predeterminada de todas las clases del espacio de nombres System.Xml. Se utiliza para cargar documentos XML y para resolver recursos externos como, por ejemplo, entidades, DTD o esquemas, e importar o incluir directivas.

Para invalidar esto, especifique el objeto XmlResolver que se va a utilizar. Al especificar XmlSecureResolver, puede restringir los recursos a los que puede tener acceso el XmlResolver subyacente.

Para crear un objeto XmlReader que utilice XmlSecureResolver

  1. Cree un objeto XmlSecureResolver con el conjunto de permisos correcto.

  2. Cree un objeto XmlReaderSettings que utilice el objeto XmlSecureResolver.

    Dim settings As New XmlReaderSettings()
    settings.XmlResolver = myResolver
    
    XmlReaderSettings settings = new XmlReaderSettings();
    settings.XmlResolver = myResolver;
    
  3. Utilice el objeto XmlReaderSettings para crear el objeto XmlReader.

    Dim reader As XmlReader = XmlReader.Create("books.xml", settings)   
    
    XmlReader reader = XmlReader.Create("books.xml", settings);
    

Para utilizar XmlSecureResolver para cargar una hoja de estilos XSLT

  1. Cree un objeto XmlSecureResolver con el conjunto de permisos correcto.

  2. Pase XmlSecureResolver al método 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);
    

Vea también

Otros recursos

Documentos y datos XML