Dela via


CA5398: Undvik hårdkodade SslProtocols-värden

Property Värde
Regel-ID CA5398
Title Undvik hårdkodade SslProtocols-värden
Kategori Säkerhet
Korrigeringen är icke-bakåtkompatibel Icke-icke-bryta
Aktiverad som standard i .NET 9 Nej

Orsak

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

Säkra värden är:

  • Tls12
  • Tls13

Regelbeskrivning

Transport Layer Security (TLS) skyddar kommunikationen mellan datorer, oftast med Hypertext Transfer Protocol Secure (HTTPS). Protokollversionerna TLS 1.0 och TLS 1.1 är inaktuella, medan TLS 1.2 och TLS 1.3 är aktuella. I framtiden kan TLS 1.2 och TLS 1.3 vara inaktuella. Undvik att hårdkoda en protokollversion för att säkerställa att programmet förblir säkert. Mer information finns i Metodtips för Transport Layer Security (TLS) med .NET Framework.

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

Hårdkoda inte TLS-protokollversioner.

När du ska ignorera varningar

Det är säkert att ignorera en varning om du behöver ansluta till en äldre tjänst som inte kan uppgraderas för att använda framtida TLS-protokollversioner.

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

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

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

Exempel på pseudokod

Brott mot uppräkningsnamn

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

Överträdelse av heltalsvärde

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

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

CA5364: Använd inte inaktuella säkerhetsprotokoll

CA5386: Undvik hårdkodning av SecurityProtocolType-värde

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