CA5397: Nie używaj przestarzałych wartości SslProtocols
Właściwości | Wartość |
---|---|
Identyfikator reguły | CA5397 |
Tytuł | Nie używaj przestarzałych wartości SslProtocols |
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.Security.Authentication.SslProtocols wartości.
- Wartość całkowita reprezentująca przestarzałą wartość została przypisana do SslProtocols zmiennej, używana jako SslProtocols wartość zwracana lub używana jako SslProtocols argument.
Przestarzałe wartości to:
- Ssl2
- 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 CA5397
// The code that's violating the rule is on this line.
#pragma warning restore CA5397
Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none
w pliku konfiguracji.
[*.{cs,vb}]
dotnet_diagnostic.CA5397.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.Security.Authentication;
public class ExampleClass
{
public void ExampleMethod()
{
// CA5397 violation for using Tls11
SslProtocols protocols = SslProtocols.Tls11 | SslProtocols.Tls12;
}
}
Imports System
Imports System.Security.Authentication
Public Class TestClass
Public Sub ExampleMethod()
' CA5397 violation for using Tls11
Dim sslProtocols As SslProtocols = SslProtocols.Tls11 Or SslProtocols.Tls12
End Sub
End Class
Naruszenie wartości całkowitej
using System;
using System.Security.Authentication;
public class ExampleClass
{
public void ExampleMethod()
{
// CA5397 violation
SslProtocols sslProtocols = (SslProtocols) 768; // TLS 1.1
}
}
Imports System
Imports System.Security.Authentication
Public Class TestClass
Public Sub ExampleMethod()
' CA5397 violation
Dim sslProtocols As SslProtocols = CType(768, SslProtocols) ' TLS 1.1
End Sub
End Class
Rozwiązanie
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
Powiązane reguły
CA5364: Nie używaj przestarzałych protokołów zabezpieczeń
CA5386: Unikaj trwałego kodowania wartości SecurityProtocolType