CA5398: Vyhněte se pevně zakódovaným hodnotám SslProtocols
Vlastnost | Hodnota |
---|---|
ID pravidla | CA5398 |
Název | Vyhněte se pevně zakódovaným hodnotám 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:
- Na bezpečnou, ale pevně zakódovanou System.Security.Authentication.SslProtocols hodnotu se odkazuje.
- Celočíselná hodnota představující verzi bezpečného protokolu byla přiřazena SslProtocols proměnné, která se používá jako SslProtocols návratová hodnota, nebo byla použita jako SslProtocols argument.
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. 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í
Upozornění je bezpečné potlačit, pokud se potřebujete připojit ke starší službě, která se nedá upgradovat, aby používala budoucí verze 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 CA5398
// The code that's violating the rule is on this line.
#pragma warning restore CA5398
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.CA5398.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()
{
// CA5398 violation
SslProtocols sslProtocols = SslProtocols.Tls12;
}
}
Imports System
Imports System.Security.Authentication
Public Class TestClass
Public Function ExampleMethod() As SslProtocols
' CA5398 violation
Return SslProtocols.Tls12
End Function
End Class
Porušení celočíselné hodnoty
using System;
using System.Security.Authentication;
public class ExampleClass
{
public SslProtocols ExampleMethod()
{
// CA5398 violation
return (SslProtocols) 3072; // TLS 1.2
}
}
Imports System
Imports System.Security.Authentication
Public Class TestClass
Public Function ExampleMethod() As SslProtocols
' CA5398 violation
Return CType(3072, SslProtocols) ' TLS 1.2
End Function
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