XmlSecureResolver XmlSecureResolver XmlSecureResolver XmlSecureResolver Class

Definición

Ayuda a proteger otra implementación de XmlResolver ajustando el objeto XmlResolver y restringiendo los recursos a los que tiene acceso el XmlResolver subyacente.Helps to secure another implementation of XmlResolver by wrapping the XmlResolver object and restricting the resources that the underlying XmlResolver has access to.

public ref class XmlSecureResolver : System::Xml::XmlResolver
public class XmlSecureResolver : System.Xml.XmlResolver
type XmlSecureResolver = class
    inherit XmlResolver
Public Class XmlSecureResolver
Inherits XmlResolver
Herencia
XmlSecureResolverXmlSecureResolverXmlSecureResolverXmlSecureResolver

Comentarios

La clase XmlUrlResolver es la resolución predeterminada de todas las clases del espacio de nombres System.Xml.The XmlUrlResolver class is the default resolver for all classes in the System.Xml namespace. Se utiliza para cargar documentos XML y resolver recursos externos, como entidades, DTD o esquemas, e importar o incluir directivas.It is used to load XML documents and to resolve external resources such as entities, DTDs or schemas, and import or include directives.

Puede invalidar este valor predeterminado especificando el XmlResolver objeto que se va a usar.You can override this default by specifying the XmlResolver object to use. Por ejemplo, si desea restringir los recursos a los que puede XmlResolver tener acceso el subyacente, puede utilizar XmlSecureResolver un objeto.For example, if you want to restrict the resources that the underlying XmlResolver can access, you can use an XmlSecureResolver object.

XmlSecureResolverse ajusta en torno a una implementación XmlResolver concreta de y restringe los recursos a XmlResolver los que tiene acceso el subyacente.XmlSecureResolver wraps around a concrete implementation of XmlResolver and restricts the resources that the underlying XmlResolver has access to. Por ejemplo, XmlSecureResolver tiene la capacidad de prohibir la redirección entre dominios, que se produce a partir de una referencia de identificador uniforme de recursos (URI) incrustada.For example, XmlSecureResolver has the ability to prohibit cross-domain redirection, which occurs from an embedded Uniform Resource Identifier (URI) reference.

Cuando se construye un XmlSecureResolver objeto, se proporciona una implementación XmlResolver válida junto con una dirección URL, una instancia de un objeto Evidence o un conjunto de permisos, que utiliza para determinar XmlSecureResolver la seguridad.When you construct an XmlSecureResolver object, you provide a valid XmlResolver implementation along with a URL, an instance of an evidence object, or a permission set, which is used by the XmlSecureResolver to determine security. Se genera System.Security.PermissionSet una o se usa la existente y PermissionSet.PermitOnly se llama a para ayudar a proteger el subyacente XmlResolver.Either a System.Security.PermissionSet is generated or the existing one is used and PermissionSet.PermitOnly is called on it to help secure the underlying XmlResolver.

Importante

Los objetos XmlSecureResolver pueden contener información confidencial como, por ejemplo, credenciales de usuario.XmlSecureResolver objects can contain sensitive information such as user credentials. Debe tener cuidado al almacenar en XmlSecureResolver caché objetos y no debe pasar XmlSecureResolver el objeto a un componente que no sea de confianza.You should be careful when caching XmlSecureResolver objects and should not pass the XmlSecureResolver object to an untrusted component.

Importante

Existen diferencias en la infraestructura de seguridad para el código que se ejecuta en el Common Language Runtime de .NET Framework (CLR) y para el código que se ejecuta en el CLR que está integrado en Microsoft SQL Server 2005.There are differences in the security infrastructure for code running on the .NET Framework common language runtime (CLR) and for code running on the CLR that is integrated within Microsoft SQL Server 2005. Esto puede dar lugar a casos en los que el código desarrollado para el .NET Framework CLR funciona de forma diferente cuando se usa en el SQL Server CLR integrado.This can lead to cases where code developed for the .NET Framework CLR operates differently when used on the SQL Server integrated CLR. Una de estas diferencias afecta a XmlSecureResolver la clase cuando se tiene evidencia basada en una dirección URL (es decir, cuando se usa el CreateEvidenceForUrl(String) método o el XmlSecureResolver constructor).One of these differences affects the XmlSecureResolver class when you have evidence that is based on a URL (that is, when you use the CreateEvidenceForUrl(String) method or the XmlSecureResolver constructor). El mecanismo de resolución de directivas del SQL Server CLR integrado no utiliza la Url información Zone de ni.The policy resolution mechanism of the SQL Server integrated CLR does not use the Url or Zone information. En su lugar, concede permisos basados en el GUID que el servidor agrega cuando se cargan los ensamblados.Instead, it grants permissions based on the GUID that the server adds when assemblies are loaded. Cuando use el XmlSecureResolver en el SQL Server CLR integrado, proporcione cualquier evidencia necesaria directamente mediante un especificado PermissionSet.When you use the XmlSecureResolver in the SQL Server integrated CLR, provide any required evidence directly by using a specified PermissionSet.

Para usar un solucionador seguroTo use a secure resolver

  1. Cree un objeto XmlSecureResolver con el conjunto de permisos correcto.Create an XmlSecureResolver with the correct permission set.

  2. Cree un objeto XmlReaderSettings que utilice el objeto XmlSecureResolver.Create an XmlReaderSettings object that uses the XmlSecureResolver object.

    XmlReaderSettings settings = new XmlReaderSettings();
    settings.XmlResolver = myResolver;
    
    Dim settings As New XmlReaderSettings()
    settings.XmlResolver = myResolver
    
  3. Pase el XmlReaderSettings objeto Create al método cuando esté creando el XmlReader objeto.Pass the XmlReaderSettings object to the Create method when you're creating the XmlReader object.

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

Para restringir el acceso mediante una dirección URLTo restrict access by using a URL

Use el XmlSecureResolver(XmlResolver, String) constructor para crear un XmlSecureResolver objeto que tenga permiso para obtener acceso solo al sitio de la Intranet local.Use the XmlSecureResolver(XmlResolver, String) constructor to create an XmlSecureResolver object that is allowed to access your local intranet site only.

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

Para restringir el acceso mediante un conjunto de permisosTo restrict access by using a permission set

  1. Crear un objeto WebPermission.Create a WebPermission object.

    WebPermission myWebPermission = new WebPermission(PermissionState.None);
    
    Dim myWebPermission As New WebPermission(PermissionState.None)
    
  2. Especifique las direcciones URL a las que desea permitir el acceso.Specify the URLs that you want to allow access to.

    myWebPermission.AddPermission(NetworkAccess.Connect,"http://www.contoso.com/");
    myWebPermission.AddPermission(NetworkAccess.Connect,"http://litwareinc.com/data/");
    
    myWebPermission.AddPermission(NetworkAccess.Connect, "http://www.contoso.com/")
    myWebPermission.AddPermission(NetworkAccess.Connect, "http://litwareinc.com/data/")
    
  3. Agregue permisos web al objeto PermissionSet.Add the web permissions to the PermissionSet object.

    PermissionSet myPermissions = new PermissionSet(PermissionState.None);
    myPermissions.AddPermission(myWebPermission);
    
    Dim myPermissions As New PermissionSet(PermissionState.None)
    myPermissions.AddPermission(myWebPermission)
    
  4. Use el XmlSecureResolver(XmlResolver, PermissionSet) constructor para crear un XmlSecureResolver objeto mediante el conjunto de permisos.Use the XmlSecureResolver(XmlResolver, PermissionSet) constructor to create an XmlSecureResolver object by using the permission set.

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

    Vea la XmlSecureResolver página de referencia para ver otro ejemplo.See the XmlSecureResolver reference page for another example.

Para restringir el acceso mediante EvidenceTo restrict access by using evidence

Puede restringir el acceso mediante el XmlSecureResolver(XmlResolver, Evidence) constructor y Evidenceespecificando.You can restrict access by using the XmlSecureResolver(XmlResolver, Evidence) constructor and specifying Evidence. Evidence se utiliza para crear el PermissionSet que se aplica al XmlResolver subyacente.The Evidence is used to create the PermissionSet that is applied to the underlying XmlResolver. XmlSecureResolver llama a PermitOnly en el PermissionSet creado antes de abrir cualquier recurso.The XmlSecureResolver calls PermitOnly on the created PermissionSet before opening any resources.

Estos son algunos escenarios comunes y el tipo de evidencia que se debe proporcionar para cada uno:Here are some common scenarios and the type of evidence to provide for each:

  • Si está trabajando en un entorno de plena confianza, use el ensamblado para crear la evidencia:If you are working in a fully trusted environment, use your assembly to create the evidence:

    Evidence myEvidence = this.GetType().Assembly.Evidence;
    XmlSecureResolver myResolver;
    myResolver = new XmlSecureResolver(new XmlUrlResolver(), myEvidence);
    
    Dim myEvidence As Evidence = Me.GetType().Assembly.Evidence
    Dim myResolver As XmlSecureResolver
    myResolver = New XmlSecureResolver(New XmlUrlResolver(), myEvidence)
    
  • Si está trabajando en un entorno de confianza parcial, tiene código o datos procedentes de un origen externo y conoce el origen del origen externo y tiene un URI comprobable, use el URI para crear la evidencia:If you are working in a semi-trusted environment, you have code or data coming from an outside source, and you know the origin of the outside source and have a verifiable URI, use the URI to create the evidence:

    
    Evidence myEvidence = XmlSecureResolver.CreateEvidenceForUrl(sourceURI);
    XmlSecureResolver myResolver = new XmlSecureResolver(new XmlUrlResolver(), myEvidence);
    
    Dim myEvidence As Evidence = XmlSecureResolver.CreateEvidenceForUrl(sourceURI)
    Dim myResolver As New XmlSecureResolver(New XmlUrlResolver(), myEvidence)
    
  • Si está trabajando en un entorno de confianza parcial y tiene código o datos procedentes de un origen externo, pero no conoce el origen del origen externo, puede:If you are working in a semi-trusted environment and you have code or data coming from an outside source, but you don't know the origin of the outside source, either:

    Establezca el parámetro evidence en null.Set the evidence parameter to null. De esta manera, no se permite el acceso a los recursos.This allows no access to resources.

    O bien-or-

    Si su aplicación necesita determinado acceso a los recursos, solicite evidencias a quien realiza la llamada.If your application requires some access to resources, request evidence from the caller.

Para usar la resolución segura para cargar una hoja de estilos XSLTTo use the secure resolver to load an XSLT style sheet

  1. Cree un objeto XmlSecureResolver con el conjunto de permisos correcto.Create an XmlSecureResolver with the correct permission set.

  2. Pasar XmlSecureResolver al método Load.Pass the XmlSecureResolver to the Load method.

    XslCompiledTransform xslt = new XslCompiledTransform();
    xslt.Load("http://serverName/data/xsl/sort.xsl", null, myResolver);
    
    Dim xslt As New XslCompiledTransform()
    xslt.Load("http://serverName/data/xsl/sort.xsl", Nothing, myResolver)
    

Notas a los desarrolladores de herederos

Esta clase tiene una petición de herencia.This class has an inheritance demand. Se requiere plena confianza para heredar de XmlSecureResolver la clase.Full trust is required to inherit from the XmlSecureResolver class.

Constructores

XmlSecureResolver(XmlResolver, Evidence) XmlSecureResolver(XmlResolver, Evidence) XmlSecureResolver(XmlResolver, Evidence) XmlSecureResolver(XmlResolver, Evidence)

Inicializa una nueva instancia de la clase XmlSecureResolver con los objetos XmlResolver y Evidence especificados.Initializes a new instance of the XmlSecureResolver class with the XmlResolver and Evidence specified.

XmlSecureResolver(XmlResolver, PermissionSet) XmlSecureResolver(XmlResolver, PermissionSet) XmlSecureResolver(XmlResolver, PermissionSet) XmlSecureResolver(XmlResolver, PermissionSet)

Inicializa una nueva instancia de la clase XmlSecureResolver con los objetos XmlResolver y PermissionSet especificados.Initializes a new instance of the XmlSecureResolver class with the XmlResolver and PermissionSet specified.

XmlSecureResolver(XmlResolver, String) XmlSecureResolver(XmlResolver, String) XmlSecureResolver(XmlResolver, String) XmlSecureResolver(XmlResolver, String)

Inicializa una nueva instancia de la clase XmlSecureResolver con el objeto XmlResolver y la dirección URL especificados.Initializes a new instance of the XmlSecureResolver class with the XmlResolver and URL provided.

Propiedades

Credentials Credentials Credentials Credentials

Establece las credenciales usadas para autenticar las solicitudes web.Sets credentials used to authenticate web requests.

Métodos

CreateEvidenceForUrl(String) CreateEvidenceForUrl(String) CreateEvidenceForUrl(String) CreateEvidenceForUrl(String)

Crea una evidencia con la dirección URL proporcionada.Creates evidence using the supplied URL.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Determina si el objeto especificado es igual al objeto actual.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetEntity(Uri, String, Type) GetEntity(Uri, String, Type) GetEntity(Uri, String, Type) GetEntity(Uri, String, Type)

Asigna un identificador URI a un objeto que contiene el recurso real.Maps a URI to an object that contains the actual resource. Este método establece provisionalmente el objeto PermissionSet creado en el constructor llamando a PermitOnly() antes de llamar a GetEntity en el XmlResolver subyacente para abrir el recurso.This method temporarily sets the PermissionSet created in the constructor by calling PermitOnly() before calling GetEntity on the underlying XmlResolver to open the resource.

GetEntityAsync(Uri, String, Type) GetEntityAsync(Uri, String, Type) GetEntityAsync(Uri, String, Type) GetEntityAsync(Uri, String, Type)

Asigna asincrónicamente un identificador URI a un objeto que contiene el recurso real.Asynchronously maps a URI to an object that contains the actual resource.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Sirve como la función hash predeterminada.Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

Obtiene el Type de la instancia actual.Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Crea una copia superficial del objeto Object actual.Creates a shallow copy of the current Object.

(Inherited from Object)
ResolveUri(Uri, String) ResolveUri(Uri, String) ResolveUri(Uri, String) ResolveUri(Uri, String)

Resuelve el identificador URI absoluto a partir de los URI base y relativo llamando a ResolveUri en el XmlResolver subyacente.Resolves the absolute URI from the base and relative URIs by calling ResolveUri on the underlying XmlResolver.

SupportsType(Uri, Type) SupportsType(Uri, Type) SupportsType(Uri, Type) SupportsType(Uri, Type)

Permite al objeto Resolver devolver otros tipos además de Stream.Enables the resolver to return types other than Stream.

(Inherited from XmlResolver)
ToString() ToString() ToString() ToString()

Devuelve una cadena que representa el objeto actual.Returns a string that represents the current object.

(Inherited from Object)

Se aplica a