Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
| 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 10 | 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)));