CA5386: Vyhněte se pevně zakódování hodnoty SecurityProtocolType
Vlastnost | Hodnota |
---|---|
ID pravidla | CA5386 |
Název | Vyhněte se pevnému zakódování hodnoty SecurityProtocolType |
Kategorie | Zabezpečení |
Oprava způsobující chybu nebo chybu způsobující chybu | Nenarušující |
Povoleno ve výchozím nastavení v .NET 9 | No |
Příčina
Toto pravidlo se aktivuje, pokud jsou splněny některé z následujících podmínek:
- Na bezpečnou, ale pevně zakódovanou System.Net.SecurityProtocolType hodnotu se odkazuje.
- Celočíselná hodnota představující bezpečnou SecurityProtocolType verzi protokolu byla přiřazena proměnné.
Bezpečné hodnoty jsou:
- Tls12
- Tls13
Popis pravidla
Protokol TLS (Transport Layer Security) zabezpečuje komunikaci mezi počítači, nejčastěji s protokolem HTTPS (Hypertext Transfer Protocol Secure). Verze protokolu TLS 1.0 a TLS 1.1 jsou zastaralé, zatímco protokol TLS 1.2 a TLS 1.3 jsou aktuální. V budoucnu může být protokol TLS 1.2 a TLS 1.3 zastaralý. Pokud chcete zajistit, aby vaše aplikace zůstala zabezpečená, vyhněte se pevně zakódování verze protokolu a cílit alespoň na rozhraní .NET Framework verze 4.7.1. Další informace naleznete v tématu Osvědčené postupy protokolu TLS (Transport Layer Security) s rozhraním .NET Framework.
Jak opravit porušení
Nezakódujte pevně verze protokolu TLS.
Kdy potlačit upozornění
Toto upozornění můžete potlačit, pokud vaše aplikace cílí na rozhraní .NET Framework verze 4.6.2 nebo starší a může běžet v počítači, který má nezabezpečené výchozí hodnoty.
Potlačení upozornění
Pokud chcete pouze potlačit jedno porušení, přidejte do zdrojového souboru direktivy preprocesoru, abyste pravidlo zakázali a znovu povolili.
#pragma warning disable CA5386
// The code that's violating the rule is on this line.
#pragma warning restore CA5386
Pokud chcete pravidlo pro soubor, složku nebo projekt zakázat, nastavte jeho závažnost v none
konfiguračním souboru.
[*.{cs,vb}]
dotnet_diagnostic.CA5386.severity = none
Další informace naleznete v tématu Jak potlačit upozornění analýzy kódu.
Příklady pseudokódu
Porušení názvu výčtu
using System;
using System.Net;
public class ExampleClass
{
public void ExampleMethod()
{
// CA5386 violation
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
}
}
Imports System
Imports System.Net
Public Class TestClass
Public Sub ExampleMethod()
' CA5386 violation
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
End Sub
End Class
Porušení celočíselné hodnoty
using System;
using System.Net;
public class ExampleClass
{
public void ExampleMethod()
{
// CA5386 violation
ServicePointManager.SecurityProtocol = (SecurityProtocolType) 3072; // TLS 1.2
}
}
Imports System
Imports System.Net
Public Class TestClass
Public Sub ExampleMethod()
' CA5386 violation
ServicePointManager.SecurityProtocol = CType(3072, SecurityProtocolType) ' TLS 1.2
End Sub
End Class
Řešení
using System;
using System.Net;
public class TestClass
{
public void TestMethod()
{
// Let the operating system decide what TLS protocol version to use.
// See https://learn.microsoft.com/dotnet/framework/network-programming/tls
}
}
Imports System
Imports System.Net
Public Class TestClass
Public Sub ExampleMethod()
' Let the operating system decide what TLS protocol version to use.
' See https://learn.microsoft.com/dotnet/framework/network-programming/tls
End Sub
End Class
Související pravidla
CA5364: Nepoužívejte zastaralé protokoly zabezpečení