CA5364: Nie używaj przestarzałych protokołów zabezpieczeń
Właściwości | Wartość |
---|---|
Identyfikator reguły | CA5364 |
Tytuł | Nie używaj przestarzałych protokołów zabezpieczeń |
Kategoria | Bezpieczeństwo |
Poprawka powodująca niezgodność lub niezgodność | Niezgodność |
Domyślnie włączone na platformie .NET 9 | Nie. |
Przyczyna
Ta reguła jest uruchamiana po spełnieniu jednego z następujących warunków:
- Odwołano się do przestarzałej System.Net.SecurityProtocolType wartości.
- Wartość całkowita reprezentująca przestarzałą wartość została przypisana do zmiennej SecurityProtocolType .
Przestarzałe wartości to:
- Ssl3
- Tls
- Tls10
- Tls11
Opis reguły
Protokół TRANSPORT Layer Security (TLS) zabezpiecza komunikację między komputerami, najczęściej z protokołem Secure (HTTPS) funkcji Hypertext Transfer Protocol. Starsze wersje protokołu TLS są mniej bezpieczne niż TLS 1.2 i TLS 1.3 i są bardziej narażone na nowe luki w zabezpieczeniach. Unikaj starszych wersji protokołu, aby zminimalizować ryzyko. Aby uzyskać wskazówki dotyczące identyfikowania i usuwania przestarzałych wersji protokołu, zobacz Rozwiązywanie problemu z protokołem TLS 1.0, 2. wydanie.
Jak naprawić naruszenia
Nie używaj przestarzałych wersji protokołu TLS.
Kiedy pomijać ostrzeżenia
To ostrzeżenie można pominąć, jeśli:
- Odwołanie do przestarzałej wersji protokołu nie jest używane do włączania przestarzałej wersji.
- Musisz nawiązać połączenie ze starszą usługą, której nie można uaktualnić, aby korzystać z bezpiecznych konfiguracji protokołu TLS.
Pomijanie ostrzeżenia
Jeśli chcesz po prostu pominąć pojedyncze naruszenie, dodaj dyrektywy preprocesora do pliku źródłowego, aby wyłączyć, a następnie ponownie włączyć regułę.
#pragma warning disable CA5364
// The code that's violating the rule is on this line.
#pragma warning restore CA5364
Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none
w pliku konfiguracji.
[*.{cs,vb}]
dotnet_diagnostic.CA5364.severity = none
Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia dotyczące analizy kodu.
Przykłady przykładów kodu przykładowego
Naruszenie nazwy wyliczenia
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
Naruszenie wartości całkowitej
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
Rozwiązanie
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
Powiązane reguły
CA5386: Unikaj trwałego kodowania wartości SecurityProtocolType