evento
Crie aplicativos e agentes de IA
17/03, 21 - 21/03, 10
Junte-se à série meetup para criar soluções de IA escaláveis com base em casos de uso do mundo real com outros desenvolvedores e especialistas.
Registe-se agoraEste browser já não é suportado.
Atualize para o Microsoft Edge para tirar partido das mais recentes funcionalidades, atualizações de segurança e de suporte técnico.
Property | valor |
---|---|
ID da regra | CA3076 |
Título | Execução de script XSLT insegura |
Categoria | Segurança |
A correção está quebrando ou não quebrando | Sem quebra |
Habilitado por padrão no .NET 9 | Não |
Se você executar XSLT (Extensible Stylesheets Language Transformations) em aplicativos .NET de forma insegura, o processador poderá resolver referências de URI não confiáveis que podem divulgar informações confidenciais a invasores, levando a ataques de negação de serviço e entre sites. Para obter mais informações, consulte Considerações de segurança XSLT (Guia .NET).
XSLT é um padrão W3C (World Wide Web Consortium) para transformar dados XML. XSLT é normalmente usado para escrever folhas de estilo para transformar dados XML em outros formatos, como HTML, texto de comprimento fixo, texto separado por vírgulas ou um formato XML diferente. Embora proibido por padrão, você pode optar por habilitá-lo para seu projeto.
Para garantir que você não esteja expondo uma superfície de ataque, essa regra será acionada sempre que o XslCompiledTransform.Load recebe instâncias de combinação inseguras de e XsltSettings, o que permite o processamento de XmlResolver scripts mal-intencionados.
Substitua o argumento XsltSettings inseguro por XsltSettings.Default ou com uma instância que tenha desativado a função de documento e a execução de script.
Substitua o XmlResolver argumento por null ou uma XmlSecureResolver instância.
A menos que você tenha certeza de que a entrada é conhecida por ser de uma fonte confiável, não suprima uma regra deste aviso.
Se você quiser apenas suprimir uma única violação, adicione diretivas de pré-processador ao seu arquivo de origem para desativar e, em seguida, reativar a regra.
#pragma warning disable CA3076
// The code that's violating the rule is on this line.
#pragma warning restore CA3076
Para desabilitar a regra de um arquivo, pasta ou projeto, defina sua gravidade como none
no arquivo de configuração.
[*.{cs,vb}]
dotnet_diagnostic.CA3076.severity = none
Para obter mais informações, consulte Como suprimir avisos de análise de código.
using System.Xml;
using System.Xml.Xsl;
namespace TestNamespace
{
class TestClass
{
void TestMethod()
{
XslCompiledTransform xslCompiledTransform = new XslCompiledTransform();
var settings = XsltSettings.TrustedXslt;
var resolver = new XmlUrlResolver();
xslCompiledTransform.Load("testStylesheet", settings, resolver); // warn
}
}
}
using System.Xml;
using System.Xml.Xsl;
namespace TestNamespace
{
class TestClass
{
void TestMethod()
{
XslCompiledTransform xslCompiledTransform = new XslCompiledTransform();
var settings = XsltSettings.Default;
var resolver = new XmlUrlResolver();
xslCompiledTransform.Load("testStylesheet", settings, resolver);
}
}
}
using System.Xml;
using System.Xml.Xsl;
namespace TestNamespace
{
class TestClass
{
private static void TestMethod(XsltSettings settings)
{
try
{
XslCompiledTransform xslCompiledTransform = new XslCompiledTransform();
var resolver = new XmlUrlResolver();
xslCompiledTransform.Load("testStylesheet", settings, resolver); // warn
}
catch { throw; }
finally { }
}
}
}
using System.Xml;
using System.Xml.Xsl;
namespace TestNamespace
{
class TestClass
{
private static void TestMethod(XsltSettings settings)
{
try
{
XslCompiledTransform xslCompiledTransform = new XslCompiledTransform();
settings.EnableDocumentFunction = false;
settings.EnableScript = false;
var resolver = new XmlUrlResolver();
xslCompiledTransform.Load("testStylesheet", settings, resolver);
}
catch { throw; }
finally { }
}
}
}
Comentários do .NET
O .NET é um projeto código aberto. Selecione um link para fornecer comentários:
evento
Crie aplicativos e agentes de IA
17/03, 21 - 21/03, 10
Junte-se à série meetup para criar soluções de IA escaláveis com base em casos de uso do mundo real com outros desenvolvedores e especialistas.
Registe-se agora