CA5398: Vermeiden Sie hartcodierte SslProtocols-Werte.
Eigenschaft | Wert |
---|---|
Regel-ID | CA5398 |
Titel | Vermeiden Sie hartcodierte 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 sicheren, aber hartcodierten System.Security.Authentication.SslProtocols Wert verwiesen.
- Ein ganzzahliger Wert, der eine sichere Protokollversion darstellt, wurde entweder einer SslProtocols-Variablen zugewiesen bzw. als SslProtocols-Rückgabewert oder SslProtocols-Argument verwendet.
Sichere Werte:
- Tls12
- Tls13
Regelbeschreibung
Transport Layer Security (TLS) sichert die Kommunikation zwischen Computern, meist in Verbindung mit Hypertext Transfer Protocol Secure (HTTPS). Die Protokollversionen TLS 1.0 und TLS 1.1 sind veraltet, die Versionen TLS 1.2 und TLS 1.3 sind aktuell. TLS 1.2 und TLS 1.3 können zukünftig auch als veraltet eingestuft werden. Um die Sicherheit Ihrer Anwendung dauerhaft zu gewährleisten, vermeiden Sie die Hartcodierung der Protokollversion. Weitere Informationen finden Sie unter Bewährte Methoden für Transport Layer Security (TLS) mit .NET-Framework.
Behandeln von Verstößen
TLS-Protokollversionen nicht hartkodieren.
Wann sollten Warnungen unterdrückt werden?
Eine Warnung lässt sich sicher unterdrücken, wenn Sie eine Verbindung mit einem Legacydienst herstellen müssen, der nicht zur Verwendung künftiger TLS-Protokollversionen 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 CA5398
// The code that's violating the rule is on this line.
#pragma warning restore CA5398
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.CA5398.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()
{
// 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
Verstoß Integer-Wert
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
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.