Share via


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

Vlastnost Hodnota
ID pravidla CA5364
Název Nepoužívejte zastaralé protokoly zabezpečení
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:

Zastaralé hodnoty jsou:

  • 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 CA5364
// The code that's violating the rule is on this line.
#pragma warning restore CA5364

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.CA5364.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()
    {
        // CA5364 violation
        ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
    }
}
Imports System
Imports System.Net

Public Class TestClass
    Public Sub ExampleMethod()
        ' CA5364 violation
        ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 Or SecurityProtocolType.Tls12
    End Sub
End Class

Porušení celočíselné hodnoty

using System;
using System.Net;

public class ExampleClass
{
    public void ExampleMethod()
    {
        // CA5364 violation
        ServicePointManager.SecurityProtocol = (SecurityProtocolType) 768;    // TLS 1.1
    }
}
Imports System
Imports System.Net

Public Class TestClass
    Public Sub ExampleMethod()
        ' CA5364 violation
        ServicePointManager.SecurityProtocol = CType(768, SecurityProtocolType)   ' TLS 1.1
    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

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

CA5397: Nepoužívejte zastaralé hodnoty SslProtocols

CA5398: Vyhněte se pevně zakódovaným hodnotám SslProtocols