Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
| 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 10 | 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)));