CA1054: Parametry identifikátoru URI by neměly být řetězce
Název_typu |
UriParametersShouldNotBeStrings |
CheckId |
CA1054 |
Kategorie |
Microsoft.design |
Změnit rozdělení |
Rozdělení |
Příčina
Typ deklaruje metodu s parametr řetězec, jehož název obsahuje "uri", "Identifikátor Uri", "urn", "Urn", "url" nebo "Adresa Url" a typ nedeklaruje odpovídající přetížení, který trvá Uri parametr.
Popis pravidla
Toto pravidlo název parametru rozdělí tokeny na základě úmluvy camel šachty a zkontroluje, zda každý token rovná se "uri", "Identifikátor Uri", "urn", "Urn", "url" nebo "Adresa Url".Pokud odpovídající pravidlo předpokládá, že parametr představuje uniform resource identifier (URI).Řetězcové vyjádření identifikátoru URI je náchylné k analýze a kódování chyby a může vést k ohrožení zabezpečení.Pokud metoda znázornění řetězec identifikátoru URI, odpovídající přetížením podle které by instanci, která má Uri třída, která poskytuje tyto služby v bezpečném způsobem.
Jak opravit porušení
Porušení tohoto pravidla opravit, změnit parametr Uri zadejte; Jedná se o změnu rozdělení.Také poskytují při přetížení metody, která trvá Uri parametr; Toto je neoddělitelnou změnit.
Při potlačení upozornění
Je bezpečné potlačí upozornění od tohoto pravidla, pokud parametr nepředstavuje identifikátoru URI.
Příklad
Následující příklad ukazuje typ, ErrorProne, který porušuje pravidlo a typ, SaferWay, který splňuje pravidla.
Imports System
Namespace DesignLibrary
Public Class ErrorProne
Dim someUriValue As String
' Violates rule UriPropertiesShouldNotBeStrings.
Property SomeUri As String
Get
Return someUriValue
End Get
Set
someUriValue = Value
End Set
End Property
' Violates rule UriParametersShouldNotBeStrings.
Sub AddToHistory(uriString As String)
End Sub
' Violates rule UriReturnValuesShouldNotBeStrings.
Function GetRefererUri(httpHeader As String) As String
Return "https://www.adventure-works.com"
End Function
End Class
Public Class SaferWay
Dim someUriValue As Uri
' To retrieve a string, call SomeUri.ToString().
' To set using a string, call SomeUri = New Uri(string).
Property SomeUri As Uri
Get
Return someUriValue
End Get
Set
someUriValue = Value
End Set
End Property
Sub AddToHistory(uriString As String)
' Check for UriFormatException.
AddToHistory(New Uri(uriString))
End Sub
Sub AddToHistory(uriString As Uri)
End Sub
Function GetRefererUri(httpHeader As String) As Uri
Return New Uri("https://www.adventure-works.com")
End Function
End Class
End Namespace
using System;
namespace DesignLibrary
{
public class ErrorProne
{
string someUri;
// Violates rule UriPropertiesShouldNotBeStrings.
public string SomeUri
{
get { return someUri; }
set { someUri = value; }
}
// Violates rule UriParametersShouldNotBeStrings.
public void AddToHistory(string uriString) { }
// Violates rule UriReturnValuesShouldNotBeStrings.
public string GetRefererUri(string httpHeader)
{
return "https://www.adventure-works.com";
}
}
public class SaferWay
{
Uri someUri;
// To retrieve a string, call SomeUri.ToString().
// To set using a string, call SomeUri = new Uri(string).
public Uri SomeUri
{
get { return someUri; }
set { someUri = value; }
}
public void AddToHistory(string uriString)
{
// Check for UriFormatException.
AddToHistory(new Uri(uriString));
}
public void AddToHistory(Uri uriType) { }
public Uri GetRefererUri(string httpHeader)
{
return new Uri("https://www.adventure-works.com");
}
}
}
#using <system.dll>
using namespace System;
namespace DesignLibrary
{
public ref class ErrorProne
{
public:
// Violates rule UriPropertiesShouldNotBeStrings.
property String^ SomeUri;
// Violates rule UriParametersShouldNotBeStrings.
void AddToHistory(String^ uriString) { }
// Violates rule UriReturnValuesShouldNotBeStrings.
String^ GetRefererUri(String^ httpHeader)
{
return "https://www.adventure-works.com";
}
};
public ref class SaferWay
{
public:
// To retrieve a string, call SomeUri()->ToString().
// To set using a string, call SomeUri(gcnew Uri(string)).
property Uri^ SomeUri;
void AddToHistory(String^ uriString)
{
// Check for UriFormatException.
AddToHistory(gcnew Uri(uriString));
}
void AddToHistory(Uri^ uriType) { }
Uri^ GetRefererUri(String^ httpHeader)
{
return gcnew Uri("https://www.adventure-works.com");
}
};
}
Souvisejících pravidel
CA1056: Vlastnosti identifikátoru URI by neměly být řetězce
CA1055: Návratové hodnoty identifikátoru URI by neměly být řetězce
CA2234: Předejte objekty System.Uri namísto řetězců
CA1057: Řetězcové přetížení identifikátoru URI volá přetížení System.Uri