Partilhar via


CA1057: as sobrecargas de URI da cadeia de caracteres chamam sobrecargas System.Uri

TypeName

StringUriOverloadsCallSystemUriOverloads

CheckId

CA1057

Categoria

Microsoft.Design

Alteração Significativa

Sem quebra

Causa

Um tipo declara as sobrecargas do método que diferem apenas pela substituição de um parâmetro de cadeia de caracteres com um parâmetro de Uri , e a sobrecarga que usa o parâmetro de cadeia de caracteres não chama a sobrecarga que usa o parâmetro de Uri .

Descrição da Regra

Como as sobrecargas diferem apenas pelo parâmetro deUri da corda, a cadeia de caracteres é usada para representar Uniform Resource Identifier (URI).Uma representação de cadeia de caracteres de um URI for susceptível a erros de análise e de codificação, e pode resultar em vulnerabilidades de segurança.A classe de Uri fornece estes serviços em um cofre e uma maneira segura.Para coletar os benefícios de Uri classe, a sobrecarga de cadeia de caracteres deve chamar a sobrecarga de Uri usando o argumento de cadeia de caracteres.

Como Corrigir Violações

o novo implementar o método que usa a representação de cadeia de caracteres URI de modo que cria uma instância da classe de Uri que usa o argumento de cadeia de caracteres, e passar o objeto de Uri a sobrecarga que tem o parâmetro de Uri .

Quando Suprimir Alertas

É seguro suprimir um aviso dessa regra se o parâmetro de cadeia de caracteres não representa um URI.

Exemplo

O exemplo a seguir mostra uma sobrecarga corretamente implementada de cadeia de caracteres.

Imports System

Namespace DesignLibrary

   Public Class History

      Sub AddToHistory(uriString As String)
          Dim newUri As New Uri(uriString)
          AddToHistory(newUri)
      End Sub 

      Sub AddToHistory(uriType As Uri)
      End Sub 

   End Class 

End Namespace
using System;

namespace DesignLibrary
{
   public class History
   {
      public void AddToHistory(string uriString)
      {
          Uri newUri = new Uri(uriString);
          AddToHistory(newUri);
      }

      public void AddToHistory(Uri uriType) { }
   }
}
#using <system.dll>
using namespace System;

namespace DesignLibrary
{
   public ref class History
   {
   public:
      void AddToHistory(String^ uriString)
      {
          Uri^ newUri = gcnew Uri(uriString);
          AddToHistory(newUri);
      }

      void AddToHistory(Uri^ uriType) { }
   };
}

Regras Relacionadas

CA2234: passar objetos System.Uri em vez de cadeias de caracteres

CA1056: as propriedades de URI não devem ser cadeias de caracteres

CA1054: os parâmetros de URI não devem ser cadeias de caracteres

CA1055: os valores de retorno de URI não devem ser cadeias de caracteres