CA5398: Hardcoded SslProtocols-waarden vermijden

Eigenschap Waarde
Regel-id CA5398
Titel Vermijd hardgecodeerde SslProtocols-waarden
Categorie Beveiliging
Fix kan brekend of niet-brekend zijn Niet-brekend
Standaard ingeschakeld in .NET 10 Nee
Toepasselijke talen C# en Visual Basic

Oorzaak

Deze regel wordt geactiveerd wanneer aan een van de volgende voorwaarden wordt voldaan:

Veilige waarden zijn:

  • Tls12
  • Tls13

Beschrijving van regel

Transport Layer Security (TLS) beveiligt de communicatie tussen computers, meestal met Hypertext Transfer Protocol Secure (HTTPS). Protocolversies TLS 1.0 en TLS 1.1 zijn afgeschaft, terwijl TLS 1.2 en TLS 1.3 actueel zijn. In de toekomst zijn TLS 1.2 en TLS 1.3 mogelijk afgeschaft. Om ervoor te zorgen dat uw toepassing veilig blijft, vermijdt u het coderen van een protocolversie. Zie best practices voor Transport Layer Security (TLS) met .NET Framework voor meer informatie.

Hoe schendingen op te lossen

Codeer geen TLS-protocolversies.

Wanneer waarschuwingen onderdrukken

Het is veilig om een waarschuwing te onderdrukken als u verbinding wilt maken met een verouderde service die niet kan worden bijgewerkt om toekomstige TLS-protocolversies te kunnen gebruiken.

Een waarschuwing onderdrukken

Als u slechts één schending wilt onderdrukken, voegt u preprocessorrichtlijnen toe aan uw bronbestand om de regel uit te schakelen en vervolgens opnieuw in te schakelen.

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

Als u de regel voor een bestand, map of project wilt uitschakelen, stelt u de ernst none ervan in op het configuratiebestand.

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

Zie voor meer informatie Hoe codeanalysewaarschuwingen te onderdrukken.

Voorbeelden van pseudocode

Schending van enumeratienaam

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

Schending van integerwaarde

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

Oplossing

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: gebruik geen afgeschafte beveiligingsprotocollen

CA5386: Voorkom het hardcoderen van de waarde van SecurityProtocolType

CA5397: gebruik geen afgeschafte SslProtocols-waarden