Partilhar 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
A correção está quebrando ou não quebrando Sem quebra
Habilitado por padrão no .NET 9 Não

Motivo

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 estiver contaminada, isso pode levar à análise de um esquema XML mal-intencionado, que permite a inclusão de bombas XML e entidades externas mal-intencionadas. Isso pode permitir que um invasor mal-intencionado execute um ataque de negação de serviço, divulgação de informações ou falsificação de solicitação do lado do servidor.

Descrição da regra

Não use a sobrecarga insegura do Add método porque pode causar referências externas perigosas.

Como corrigir violações

  • Não utilize 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

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 CA3061
// The code that's violating the rule is on this line.
#pragma warning restore CA3061

Para desabilitar a regra de um arquivo, pasta ou projeto, defina sua gravidade como none no arquivo de configuração.

[*.{cs,vb}]
dotnet_diagnostic.CA3061.severity = none

Para obter mais informações, consulte 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 detetado por essa regra. O segundo tipo de 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)));