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 objeto XmlResolver 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 XmlResolver subjacente pode acessar, você pode usar um objeto XmlSecureResolver.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 de XmlResolver e restringe os recursos aos quais o XmlResolver subjacente tem acesso.XmlSecureResolver wraps around a concrete implementation of XmlResolver and restricts the resources that the underlying XmlResolver has access to. Por exemplo, XmlSecureResolver 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 objeto de XmlSecureResolver, você fornece uma implementação de XmlResolver válida 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 nome existente é usado e PermissionSet.PermitOnly é chamado nele para ajudar a proteger o XmlResolversubjacente.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 em cache XmlSecureResolver objetos e não deve passar o objeto XmlSecureResolver 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 classe XmlSecureResolver quando você tem evidências com base em uma URL (ou seja, quando você usa o método CreateEvidenceForUrl(String) ou o Construtor XmlSecureResolver).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 informações de Url ou Zone.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 CLR integrado SQL Server, forneça qualquer evidência necessária diretamente usando uma PermissionSetespecificada.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 objeto XmlReaderSettings para o método Create ao criar o objeto XmlReader.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 Construtor XmlSecureResolver(XmlResolver, String) para criar um objeto de XmlSecureResolver que tenha permissão para acessar seu site de intranet local somente.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 Construtor XmlSecureResolver(XmlResolver, PermissionSet) para criar um objeto XmlSecureResolver 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 página de referência do XmlSecureResolver 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 Construtor XmlSecureResolver(XmlResolver, Evidence) 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 classe XmlSecureResolver.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.

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