XmlSecureResolver Classe

Definição

Ajuda a proteger outra implementação de XmlResolver encapsulando o objeto XmlResolver e restringindo os recursos aos quais o XmlResolver subjacente tem acesso.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
Herança
XmlSecureResolver

Comentários

A classe de XmlUrlResolver é o resolvedor padrão para todas as classes no namespace de System.Xml .The XmlUrlResolver class is the default resolver for all classes in the System.Xml namespace. Ele é usado para carregar documentos XML e para resolver recursos externos, como entidades, DTDs ou esquemas, e importar ou incluir diretivas.It is used to load XML documents and to resolve external resources such as entities, DTDs or schemas, and import or include directives.

Você pode substituir esse padrão especificando o XmlResolver objeto a ser usado.You can override this default by specifying the XmlResolver object to use. Por exemplo, se você quiser restringir os recursos que o subjacente XmlResolver pode acessar, você pode usar um XmlSecureResolver objeto.For example, if you want to restrict the resources that the underlying XmlResolver can access, you can use an XmlSecureResolver object.

XmlSecureResolver encapsula em uma implementação concreta XmlResolver e restringe os recursos aos quais o subjacente XmlResolver tem acesso.XmlSecureResolver wraps around a concrete implementation of XmlResolver and restricts the resources that the underlying XmlResolver has access to. Por exemplo, XmlSecureResolver o tem a capacidade de proibir o redirecionamento entre domínios, que ocorre de uma referência de URI (Uniform Resource Identifier) inserida.For example, XmlSecureResolver has the ability to prohibit cross-domain redirection, which occurs from an embedded Uniform Resource Identifier (URI) reference.

Ao construir um XmlSecureResolver objeto, você fornece uma implementação válida XmlResolver junto com uma URL, uma instância de um objeto Evidence ou um conjunto de permissões, que é usado pelo XmlSecureResolver para determinar a segurança.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. Um System.Security.PermissionSet é gerado ou o existente é usado e PermissionSet.PermitOnly é chamado nele para ajudar a proteger o subjacente 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

os objetos deXmlSecureResolver podem conter informações sigilosas como credenciais do usuário.XmlSecureResolver objects can contain sensitive information such as user credentials. Você deve ter cuidado ao armazenar XmlSecureResolver objetos em cache e não deve passar o XmlSecureResolver objeto para um componente não confiável.You should be careful when caching XmlSecureResolver objects and should not pass the XmlSecureResolver object to an untrusted component.

Importante

Há diferenças na infraestrutura de segurança para código em execução no .NET Framework Common Language Runtime (CLR) e no código em execução no CLR integrado no 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. Isso pode levar a casos em que o código desenvolvido para o .NET Framework CLR funciona de forma diferente quando usado no 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. Uma dessas diferenças afeta a XmlSecureResolver classe quando você tem evidências com base em uma URL (ou seja, quando você usa o CreateEvidenceForUrl(String) método ou o XmlSecureResolver Construtor).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). O mecanismo de resolução de política do CLR integrado SQL Server não usa as Url Zone informações ou.The policy resolution mechanism of the SQL Server integrated CLR does not use the Url or Zone information. Em vez disso, ele concede permissões com base no GUID que o servidor adiciona quando os assemblies são carregados.Instead, it grants permissions based on the GUID that the server adds when assemblies are loaded. Ao usar o XmlSecureResolver no SQL Server CLR integrado, forneça qualquer evidência necessária diretamente usando um 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 um resolvedor seguroTo use a secure resolver

  1. Crie XmlSecureResolver com o conjunto de permissões correto.Create an XmlSecureResolver with the correct permission set.

  2. Crie um objeto de XmlReaderSettings que usa o objeto de 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. Passe o XmlReaderSettings objeto para o Create método quando você estiver criando o 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 o acesso usando uma URLTo restrict access by using a URL

Use o XmlSecureResolver(XmlResolver, String) construtor para criar um XmlSecureResolver objeto que tenha permissão para acessar somente seu site de 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 o acesso usando um conjunto de permissõesTo restrict access by using a permission set

  1. Crie um objeto WebPermission.Create a WebPermission object.

    WebPermission myWebPermission = new WebPermission(PermissionState.None);
    
    Dim myWebPermission As New WebPermission(PermissionState.None)
    
  2. Especifique as URLs às quais você deseja permitir o acesso.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. Adicione as permissões da Web para o objeto de 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 o XmlSecureResolver(XmlResolver, PermissionSet) construtor para criar um XmlSecureResolver objeto usando o conjunto de permissões.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)
    

    Consulte a XmlSecureResolver página de referência para obter outro exemplo.See the XmlSecureResolver reference page for another example.

Para restringir o acesso usando evidênciasTo restrict access by using evidence

Você pode restringir o acesso usando o XmlSecureResolver(XmlResolver, Evidence) Construtor e especificando Evidence .You can restrict access by using the XmlSecureResolver(XmlResolver, Evidence) constructor and specifying Evidence. Evidence é usado para criar PermissionSet que é aplicado a XmlResolversubjacente.The Evidence is used to create the PermissionSet that is applied to the underlying XmlResolver. XmlSecureResolver chama PermitOnly em PermissionSet criado antes de abrir qualquer recurso.The XmlSecureResolver calls PermitOnly on the created PermissionSet before opening any resources.

Aqui estão alguns cenários comuns e o tipo de evidência a ser fornecido para cada um:Here are some common scenarios and the type of evidence to provide for each:

  • Se você estiver trabalhando em um ambiente totalmente confiável, use seu assembly para criar a evidência: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)
    
  • Se você estiver trabalhando em um ambiente semiconfiável, terá código ou dados provenientes de uma fonte externa e souber a origem da origem externa e ter um URI verificável, usar o URI para criar a evidência: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)
    
  • Se você estiver trabalhando em um ambiente semiconfiável e tiver código ou dados provenientes de uma fonte externa, mas não souber a origem da origem externa, seja: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:

    Defina o parâmetro de evidence a null.Set the evidence parameter to null. Isso não permite sem acesso a recursos.This allows no access to resources.

    - ou --or-

    Se seu aplicativo requer algum acesso aos recursos, solicite a evidência do chamador.If your application requires some access to resources, request evidence from the caller.

Para usar o resolvedor seguro para carregar uma folha de estilos XSLTTo use the secure resolver to load an XSLT style sheet

  1. Crie XmlSecureResolver com o conjunto de permissões correto.Create an XmlSecureResolver with the correct permission set.

  2. Passar XmlSecureResolver para o método de 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 aos Herdeiros

Essa classe tem uma demanda de herança.This class has an inheritance demand. A confiança total é necessária para herdar da XmlSecureResolver classe.Full trust is required to inherit from the XmlSecureResolver class.

Construtores

XmlSecureResolver(XmlResolver, Evidence)

Inicializa uma nova instância da classe XmlSecureResolver com o XmlResolver e Evidence especificados.Initializes a new instance of the XmlSecureResolver class with the XmlResolver and Evidence specified.

XmlSecureResolver(XmlResolver, PermissionSet)

Inicializa uma nova instância da classe XmlSecureResolver com o XmlResolver e PermissionSet especificados.Initializes a new instance of the XmlSecureResolver class with the XmlResolver and PermissionSet specified.

XmlSecureResolver(XmlResolver, String)

Inicializa uma nova instância da classe XmlSecureResolver com o XmlResolver e a URL fornecida.Initializes a new instance of the XmlSecureResolver class with the XmlResolver and URL provided.

Propriedades

Credentials

Define as credenciais usadas para autenticar solicitações da Web.Sets credentials used to authenticate web requests.

Métodos

CreateEvidenceForUrl(String)

Cria a evidência usando a URL fornecida.Creates evidence using the supplied URL.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.Determines whether the specified object is equal to the current object.

(Herdado de Object)
GetEntity(Uri, String, Type)

Mapeia um URI para um objeto que contém o recurso real.Maps a URI to an object that contains the actual resource. Esse método define temporariamente o PermissionSet criado no construtor chamando PermitOnly() antes de chamar GetEntity no XmlResolver subjacente para abrir o 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)

Mapeia de forma assíncrona um URI para um objeto que contém o recurso real.Asynchronously maps a URI to an object that contains the actual resource.

GetEntityAsync(Uri, String, Type)

Mapeia de forma assíncrona um URI para um objeto que contém o recurso real.Asynchronously maps a URI to an object that contains the actual resource.

(Herdado de XmlResolver)
GetHashCode()

Serve como a função de hash padrão.Serves as the default hash function.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.Gets the Type of the current instance.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do Object atual.Creates a shallow copy of the current Object.

(Herdado de Object)
ResolveUri(Uri, String)

Resolve o URI absoluto dos URIs de base e relativo chamando ResolveUri no XmlResolver subjacente.Resolves the absolute URI from the base and relative URIs by calling ResolveUri on the underlying XmlResolver.

SupportsType(Uri, Type)

Habilita o resolvedor para tipos de retorno diferentes de Stream.Enables the resolver to return types other than Stream.

(Herdado de XmlResolver)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.Returns a string that represents the current object.

(Herdado de Object)

Aplica-se a