CA5398: Unikaj zakodowanych na stałe wartości SslProtocols
Właściwości | Wartość |
---|---|
Identyfikator reguły | CA5398 |
Tytuł | Unikaj zapisanych na stałe 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 bezpiecznej, ale zakodowanej System.Security.Authentication.SslProtocols na stałe wartości.
- Wartość całkowita reprezentująca wersję bezpiecznego protokołu została przypisana do SslProtocols zmiennej, używana jako wartość zwracana SslProtocols lub używana jako SslProtocols argument.
Bezpieczne wartości to:
- Tls12
- Tls13
Opis reguły
Protokół TRANSPORT Layer Security (TLS) zabezpiecza komunikację między komputerami, najczęściej z protokołem Secure (HTTPS) funkcji Hypertext Transfer Protocol. Wersje protokołu TLS 1.0 i TLS 1.1 są przestarzałe, a protokoły TLS 1.2 i TLS 1.3 są aktualne. W przyszłości protokoły TLS 1.2 i TLS 1.3 mogą być przestarzałe. Aby zapewnić bezpieczeństwo aplikacji, należy unikać trwałego kodowania wersji protokołu. Aby uzyskać więcej informacji, zobacz Transport Layer Security (TLS) best practices with .NET Framework (Transport Layer Security ) best practices with .NET Framework (Najlepsze rozwiązania dotyczące protokołu Transport Layer Security (TLS).
Jak naprawić naruszenia
Nie koduj wersji protokołu TLS na stałe.
Kiedy pomijać ostrzeżenia
Można bezpiecznie pominąć ostrzeżenie, jeśli musisz nawiązać połączenie ze starszą usługą, której nie można uaktualnić w celu korzystania z przyszłych wersji 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 CA5398
// The code that's violating the rule is on this line.
#pragma warning restore CA5398
Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none
w pliku konfiguracji.
[*.{cs,vb}]
dotnet_diagnostic.CA5398.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()
{
// 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
Naruszenie wartości całkowitej
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
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