CA5397: Verwenden Sie keine veralteten SslProtocols-Werte.
Eigenschaft | Wert |
---|---|
Regel-ID | CA5397 |
Titel | Verwenden Sie keine veralteten SslProtocols-Werte. |
Kategorie | Security |
Fix führt oder führt nicht zur Unterbrechung | Nicht unterbrechend |
Standardmäßig in .NET 9 aktiviert | No |
Ursache
Diese Regel wird ausgelöst, wenn eine der folgenden Bedingungen zutrifft:
- Es wurde auf einen veralteten System.Security.Authentication.SslProtocols-Wert verwiesen.
- Ein Integerwert, der einen veralteten Wert darstellt, wurde entweder einer SslProtocols-Variablen zugewiesen, als SslProtocols-Rückgabewert oder als SslProtocols-Argument verwendet.
Veraltete Werte sind:
- SSL2
- SSL3
- TLS
- TLS10
- TLS11
Regelbeschreibung
Transport Layer Security (TLS) sichert die Kommunikation zwischen Computern, meist in Verbindung mit Hypertext Transfer Protocol Secure (HTTPS). Ältere Protokollversionen von TLS sind weniger sicher als TLS 1.2 und TLS 1.3, daher ist es wahrscheinlicher, dass diese Versionen neue Sicherheitsrisiken aufweisen. Vermeiden Sie ältere Protokollversionen, um das Risiko zu minimieren. Anleitungen zum Identifizieren und Entfernen veralteter Protokollversionen finden Sie unter Lösen des TLS 1.0-Problems, 2. Ausgabe.
Behandeln von Verstößen
Verwenden Sie keine veralteten TLS-Protokollversionen.
Wann sollten Warnungen unterdrückt werden?
Sie können diese Warnung in folgenden Fällen unterdrücken:
- Der Verweis auf die veraltete Protokollversion wird nicht verwendet, um eine veraltete Version zu aktivieren.
- Sie müssen eine Verbindung mit einem Legacy-Dienst herstellen, der nicht für die Verwendung sicherer TLS-Konfigurationen aktualisiert werden kann.
Unterdrücken einer Warnung
Um nur eine einzelne Verletzung zu unterdrücken, fügen Sie der Quelldatei Präprozessoranweisungen hinzu, um die Regel zu deaktivieren und dann wieder zu aktivieren.
#pragma warning disable CA5397
// The code that's violating the rule is on this line.
#pragma warning restore CA5397
Um die Regel für eine Datei, einen Ordner oder ein Projekt zu deaktivieren, legen Sie den Schweregrad in der Konfigurationsdatei auf none
fest.
[*.{cs,vb}]
dotnet_diagnostic.CA5397.severity = none
Weitere Informationen finden Sie unter Vorgehensweise: Unterdrücken von Codeanalyse-Warnungen.
Pseudocodebeispiele
Verstoß Enumerationname
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
Verstoß Integer-Wert
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
Lösung
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
Ähnliche Regeln
CA5364: Verwenden Sie keine veralteten Sicherheitsprotokolle.
CA5386: Vermeiden Sie die Hartcodierung des SecurityProtocolType-Werts.