CA5397: Nepoužívejte zastaralé hodnoty SslProtocols
Vlastnost | Hodnota |
---|---|
ID pravidla | CA5397 |
Název | Nepoužívejte zastaralé hodnoty SslProtocols |
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:
- Byla odkazována zastaralá System.Security.Authentication.SslProtocols hodnota.
- Celočíselná hodnota představující zastaralou hodnotu byla přiřazena proměnné SslProtocols , použita jako SslProtocols návratová hodnota nebo použita jako SslProtocols argument.
Zastaralé hodnoty jsou:
- Ssl2
- Ssl3
- Tls
- Tls10
- Tls11
Popis pravidla
Protokol TLS (Transport Layer Security) zabezpečuje komunikaci mezi počítači, nejčastěji s protokolem HTTPS (Hypertext Transfer Protocol Secure). Starší verze protokolu TLS jsou méně zabezpečené než protokoly TLS 1.2 a TLS 1.3 a s větší pravděpodobností mají nová ohrožení zabezpečení. Vyhněte se starším verzím protokolu, abyste minimalizovali riziko. Pokyny k identifikaci a odebrání zastaralých verzí protokolu najdete v tématu Řešení potíží s protokolem TLS 1.0, 2. vydání.
Jak opravit porušení
Nepoužívejte zastaralé verze protokolu TLS.
Kdy potlačit upozornění
Toto upozornění můžete potlačit, pokud:
- Odkaz na zastaralou verzi protokolu se nepoužívá k povolení zastaralé verze.
- Musíte se připojit ke starší službě, která se nedá upgradovat, aby používala zabezpečené konfigurace PROTOKOLU TLS.
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 CA5397
// The code that's violating the rule is on this line.
#pragma warning restore CA5397
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.CA5397.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.Security.Authentication;
public class ExampleClass
{
public void ExampleMethod()
{
// CA5397 violation for using Tls11
SslProtocols protocols = SslProtocols.Tls11 | SslProtocols.Tls12;
}
}
Imports System
Imports System.Security.Authentication
Public Class TestClass
Public Sub ExampleMethod()
' CA5397 violation for using Tls11
Dim sslProtocols As SslProtocols = SslProtocols.Tls11 Or SslProtocols.Tls12
End Sub
End Class
Porušení celočíselné hodnoty
using System;
using System.Security.Authentication;
public class ExampleClass
{
public void ExampleMethod()
{
// CA5397 violation
SslProtocols sslProtocols = (SslProtocols) 768; // TLS 1.1
}
}
Imports System
Imports System.Security.Authentication
Public Class TestClass
Public Sub ExampleMethod()
' CA5397 violation
Dim sslProtocols As SslProtocols = CType(768, SslProtocols) ' TLS 1.1
End Sub
End Class
Řešení
using System;
using System.Security.Authentication;
public class TestClass
{
public void Method()
{
// Let the operating system decide what TLS protocol version to use.
// See https://learn.microsoft.com/dotnet/framework/network-programming/tls
SslProtocols sslProtocols = SslProtocols.None;
}
}
Imports System
Imports System.Security.Authentication
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
Dim sslProtocols As SslProtocols = SslProtocols.None
End Sub
End Class
Související pravidla
CA5364: Nepoužívejte zastaralé protokoly zabezpečení
CA5386: Vyhněte se pevně zakódování hodnoty SecurityProtocolType