CA5364: Verwenden Sie keine veralteten Sicherheitsprotokolle.

Eigenschaft Wert
Regel-ID CA5364
Titel Verwenden Sie keine veralteten Sicherheitsprotokolle.
Kategorie Security
Fix führt oder führt nicht zur Unterbrechung Nicht unterbrechend
Standardmäßig in .NET 8 aktiviert Nein

Ursache

Diese Regel wird ausgelöst, wenn eine der folgenden Bedingungen zutrifft:

Veraltete Werte sind:

  • 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 CA5364
// The code that's violating the rule is on this line.
#pragma warning restore CA5364

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.CA5364.severity = none

Weitere Informationen finden Sie unter Vorgehensweise: Unterdrücken von Codeanalyse-Warnungen.

Pseudocodebeispiele

Verstoß Enumerationname

using System;
using System.Net;

public class ExampleClass
{
    public void ExampleMethod()
    {
        // CA5364 violation
        ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
    }
}
Imports System
Imports System.Net

Public Class TestClass
    Public Sub ExampleMethod()
        ' CA5364 violation
        ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 Or SecurityProtocolType.Tls12
    End Sub
End Class

Verstoß Integer-Wert

using System;
using System.Net;

public class ExampleClass
{
    public void ExampleMethod()
    {
        // CA5364 violation
        ServicePointManager.SecurityProtocol = (SecurityProtocolType) 768;    // TLS 1.1
    }
}
Imports System
Imports System.Net

Public Class TestClass
    Public Sub ExampleMethod()
        ' CA5364 violation
        ServicePointManager.SecurityProtocol = CType(768, SecurityProtocolType)   ' TLS 1.1
    End Sub
End Class

Lösung

using System;
using System.Net;

public class TestClass
{
    public void TestMethod()
    {
        // Let the operating system decide what TLS protocol version to use.
        // See https://learn.microsoft.com/dotnet/framework/network-programming/tls
    }
}
Imports System
Imports System.Net

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
    End Sub
End Class

CA5386: Vermeiden Sie die Hartcodierung des SecurityProtocolType-Werts.

CA5397: Verwenden Sie keine veralteten SslProtocols-Werte.

CA5398: Vermeiden Sie hartcodierte SslProtocols-Werte.