CA3061: Não adicionar esquema por URL
Property | Valor |
---|---|
ID da regra | CA3061 |
Título | Não adicionar esquema por URL |
Categoria | Segurança |
Correção interruptiva ou sem interrupção | Sem interrupção |
Habilitado por padrão no .NET 9 | Não |
Causa
A sobrecarga de XmlSchemaCollection.Add(String, String)
está usando XmlUrlResolver
para especificar o esquema XML externo na forma de um URI. Se a cadeia de caracteres de URI for afetada, isso poderá levar à análise de um esquema XML mal-intencionado, permitindo a inclusão de bombas de XML e entidades externas mal-intencionadas. Isso pode permitir que um invasor mal-intencionado execute um ataque de falsificação de solicitação de negação de serviço, divulgação de informações ou solicitação do servidor.
Descrição da regra
Não use a sobrecarga não segura do método Add
porque isso pode causar referências externas perigosas.
Como corrigir violações
- Não use
XmlSchemaCollection.Add(String, String)
.
Quando suprimir avisos
Suprima essa regra se tiver certeza de que seu XML não resolve referências externas perigosas.
Suprimir um aviso
Para suprimir apenas uma violação, adicione diretivas de pré-processador ao arquivo de origem a fim de desabilitar e, em seguida, reabilitar a regra.
#pragma warning disable CA3061
// The code that's violating the rule is on this line.
#pragma warning restore CA3061
Para desabilitar a regra em um arquivo, uma pasta ou um projeto, defina a severidade como none
no arquivo de configuração.
[*.{cs,vb}]
dotnet_diagnostic.CA3061.severity = none
Para obter mais informações, confira Como suprimir avisos de análise de código.
Exemplos de pseudocódigo
Violação
O exemplo de pseudocódigo a seguir ilustra o padrão detectado por essa regra.
O tipo do segundo parâmetro é string
.
using System;
using System.Xml.Schema;
...
XmlSchemaCollection xsc = new XmlSchemaCollection();
xsc.Add("urn: bookstore - schema", "books.xsd");
Solução
using System;
using System.IO;
using System.Xml;
using System.Xml.Schema;
...
XmlSchemaCollection xsc = new XmlSchemaCollection();
xsc.Add("urn: bookstore - schema", new XmlTextReader(new FileStream(""xmlFilename"", FileMode.Open)));