Share via


CA5364: Använd inte inaktuella säkerhetsprotokoll

Property Värde
Regel-ID CA5364
Rubrik Använd inte inaktuella säkerhetsprotokoll
Kategori Säkerhet
Korrigeringen är icke-bakåtkompatibel Icke-icke-bryta
Aktiverad som standard i .NET 8 Nej

Orsak

Den här regeln utlöses när något av följande villkor uppfylls:

Inaktuella värden är:

  • Ssl3
  • Tls
  • Tls10
  • Tls11

Regelbeskrivning

Transport Layer Security (TLS) skyddar kommunikationen mellan datorer, oftast med Hypertext Transfer Protocol Secure (HTTPS). Äldre protokollversioner av TLS är mindre säkra än TLS 1.2 och TLS 1.3 och är mer benägna att ha nya säkerhetsrisker. Undvik äldre protokollversioner för att minimera risken. Information om hur du identifierar och tar bort inaktuella protokollversioner finns i Lösa TLS 1.0-problemet, andra utgåvan.

Så här åtgärdar du överträdelser

Använd inte inaktuella TLS-protokollversioner.

När du ska ignorera varningar

Du kan ignorera den här varningen om:

  • Referensen till den inaktuella protokollversionen används inte för att aktivera en inaktuell version.
  • Du måste ansluta till en äldre tjänst som inte kan uppgraderas för att använda säkra TLS-konfigurationer.

Ignorera en varning

Om du bara vill förhindra en enda överträdelse lägger du till förprocessordirektiv i källfilen för att inaktivera och aktiverar sedan regeln igen.

#pragma warning disable CA5364
// The code that's violating the rule is on this line.
#pragma warning restore CA5364

Om du vill inaktivera regeln för en fil, mapp eller ett projekt anger du dess allvarlighetsgrad till none i konfigurationsfilen.

[*.{cs,vb}]
dotnet_diagnostic.CA5364.severity = none

Mer information finns i Så här utelämnar du kodanalysvarningar.

Exempel på pseudokod

Brott mot uppräkningsnamn

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

Överträdelse av heltalsvärde

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ösning

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: Undvik hårdkodning av SecurityProtocolType-värde

CA5397: Använd inte inaktuella SslProtocols-värden

CA5398: Undvik hårdkodade SslProtocols-värden