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