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