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 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.Net.SecurityProtocolType hodnota.
- Celočíselná hodnota představující zastaralou hodnotu byla přiřazena proměnné SecurityProtocolType .
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
Související pravidla
CA5386: Vyhněte se pevně zakódování hodnoty SecurityProtocolType