Share via


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 8 No

Příčina

Toto pravidlo se aktivuje, pokud jsou splněny některé z následujících podmínek:

Sejf 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

CA5364: Nepoužívejte zastaralé protokoly zabezpečení

CA5386: Vyhněte se pevně zakódování hodnoty SecurityProtocolType

CA5397: Nepoužívejte zastaralé hodnoty SslProtocols