Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
A linguagem XSLT tem um rico conjunto de recursos que lhe dão uma grande dose de poder e flexibilidade. Inclui muitas funcionalidades que, embora úteis, também podem ser exploradas por fontes externas. Para usar o XSLT com segurança, você deve entender os tipos de problemas de segurança que surgem ao usar o XSLT e as estratégias básicas que você pode empregar para mitigar esses riscos.
Extensões XSLT
Duas extensões XSLT populares são objetos de extensão e script de folha de estilo. Essas extensões permitem que o processador XSLT execute código.
Os objetos de extensão adicionam recursos de programação às transformações XSL.
Os scripts podem ser incorporados na folha de estilos usando o elemento de extensão
msxsl:script.
Objetos de extensão
Objetos de extensão são adicionados usando o AddExtensionObject método. O conjunto de permissões FullTrust é necessário para suportar objetos de extensão. Isso garante que a elevação de permissões não aconteça quando o código objeto de extensão é executado. A tentativa de chamar o método AddExtensionObject sem permissões FullTrust resulta no lançamento de uma exceção de segurança.
Scripts de Folha de Estilo
Os scripts podem ser incorporados numa folha de estilos usando o msxsl:script elemento de extensão. O suporte a scripts é um recurso opcional na classe XslCompiledTransform que está desabilitado por padrão. A funcionalidade de scripting pode ser ativada definindo a propriedade XsltSettings.EnableScript, e passando o objeto true para o método XsltSettings.
Observação
Os blocos de script são suportados apenas no .NET Framework. Eles não são suportados no .NET Core ou .NET 5 ou posterior.
Orientações
Habilite o script somente quando a folha de estilos vier de uma fonte confiável. Se você não puder verificar a origem da folha de estilos ou se a folha de estilos não vier de uma fonte confiável, passe null para o argumento de configurações XSLT.
Recursos Externos
A linguagem XSLT tem recursos como xsl:import, xsl:include, ou a document() função, onde o processador precisa resolver referências de URI. A XmlResolver classe é usada para resolver recursos externos. Os recursos externos podem ter de ser resolvidos nos dois casos seguintes:
Ao compilar uma folha de estilos, o XmlResolver é utilizado para resolução de
xsl:importexsl:include.Ao executar a transformação, o XmlResolver é usado para resolver a
document()função.Observação
A
document()função é desabilitada por padrão na XslCompiledTransform classe. Esse recurso pode ser habilitado ao definir a propriedade XsltSettings.EnableDocumentFunction paratruee passar o objeto XsltSettings para o método Load.
Os Load e Transform métodos incluem sobrecargas que aceitam um XmlResolver como um de seus argumentos. Se um XmlResolver não for especificado, um padrão XmlUrlResolver sem credenciais será usado.
Orientações
Habilite a document() função somente quando a folha de estilos vier de uma fonte confiável.
A lista a seguir descreve quando você pode querer especificar um XmlResolver objeto:
Se o processo XSLT precisar acessar um recurso de rede que exija autenticação, você poderá usar um XmlResolver com as credenciais necessárias.
Se você quiser restringir os recursos que o processo XSLT pode acessar, você pode usar um XmlSecureResolver com o conjunto de permissões correto. Use a XmlSecureResolver classe se precisar abrir um recurso que você não controla ou que não é confiável.
Se quiser personalizar o comportamento, você pode implementar sua própria XmlResolver classe e usá-la para resolver recursos.
Se quiser garantir que nenhum recurso externo seja acessado, especifique o argumento
nullcom XmlResolver.