Compartilhar via


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 8 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)));