CA5366: Usar XmlReader para DataSet Read XML
Property | valor |
---|---|
ID da regra | CA5366 |
Título | Usar XmlReader para DataSet Read XML |
Categoria | Segurança |
A correção está quebrando ou não quebrando | Sem quebra |
Habilitado por padrão no .NET 9 | Não |
Motivo
Uma definição de tipo de documento (DTD) define a estrutura e os elementos legais e atributos de um documento XML. Referir-se a um DTD de um recurso externo pode causar potenciais ataques de negação de serviço (DoS). A maioria dos leitores não pode desativar o processamento DTD e restringir o carregamento de referências externas, exceto para System.Xml.XmlReader. O uso desses outros leitores para carregar XML por um dos seguintes métodos aciona essa regra:
Descrição da regra
Usar um System.Data.DataSet para ler XML com dados não confiáveis pode carregar referências externas perigosas, que devem ser restringidas usando um XmlReader com um resolvedor seguro ou com o processamento DTD desativado.
Como corrigir violações
Use XmlReader ou suas classes derivadas para ler XML.
Quando suprimir avisos
Suprima um aviso dessa regra ao lidar com uma fonte de dados confiável.
Suprimir um 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 CA5366
// The code that's violating the rule is on this line.
#pragma warning restore CA5366
Para desabilitar a regra de um arquivo, pasta ou projeto, defina sua gravidade como none
no arquivo de configuração.
[*.{cs,vb}]
dotnet_diagnostic.CA5366.severity = none
Para obter mais informações, consulte Como suprimir avisos de análise de código.
Exemplos de pseudocódigo
Violação
using System.Data;
using System.IO;
public class ExampleClass
{
public void ExampleMethod()
{
new DataSet().ReadXml(new FileStream("xmlFilename", FileMode.Open));
}
}
Solução
using System.Data;
using System.IO;
using System.Xml;
public class ExampleClass
{
public void ExampleMethod()
{
new DataSet().ReadXml(new XmlTextReader(new FileStream("xmlFilename", FileMode.Open)));
}
}