Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
| Właściwości | Wartość |
|---|---|
| Identyfikator reguły | CA5398 |
| Tytuł | Unikaj zapisanych na stałe wartości SslProtocols |
| Kategoria | Bezpieczeństwo |
| Poprawka łamiąca lub nienaruszająca | Niezgodność |
| Domyślnie włączone na platformie .NET 10 | Nie. |
| Zastosowane języki | C# i Visual Basic |
Przyczyna
Ta reguła jest uruchamiana po spełnieniu jednego z następujących warunków:
- Odwołano się do bezpiecznej, ale zakodowanej na stałe wartości System.Security.Authentication.SslProtocols.
- 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 w połączeniu z protokołem Hypertext Transfer Protocol Secure (HTTPS). 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 Najlepsze praktyki dotyczące Transport Layer Security (TLS) w .NET Framework.
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 pseudokodu
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