CA5398: evitare valori SslProtocols hardcoded

Proprietà valore
ID regola CA5398
Titolo Evitare valori SslProtocols hardcoded
Categoria Sicurezza
Correzione che causa un'interruzione o un'interruzione Nessuna interruzione
Abilitato per impostazione predefinita in .NET 8 No

Causa

Questa regola viene attivata quando vengono soddisfatte una delle condizioni seguenti:

Cassaforte valori sono:

  • Tls12
  • Tls13

Descrizione regola

Transport Layer Security (TLS) protegge la comunicazione tra computer, in genere con PROTOCOLLO HTTPS (Hypertext Transfer Protocol Secure). Le versioni del protocollo TLS 1.0 e TLS 1.1 sono deprecate, mentre TLS 1.2 e TLS 1.3 sono correnti. In futuro, TLS 1.2 e TLS 1.3 potrebbero essere deprecati. Per garantire che l'applicazione rimanga sicura, evitare di impostare come hardcoding una versione del protocollo. Per altre informazioni, vedere Procedure consigliate per Transport Layer Security (TLS) con .NET Framework.

Come correggere le violazioni

Non impostare come hardcoded le versioni del protocollo TLS.

Quando eliminare gli avvisi

È possibile eliminare un avviso se è necessario connettersi a un servizio legacy che non può essere aggiornato per usare versioni future del protocollo TLS.

Eliminare un avviso

Se si vuole eliminare una singola violazione, aggiungere direttive del preprocessore al file di origine per disabilitare e quindi riabilitare la regola.

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

Per disabilitare la regola per un file, una cartella o un progetto, impostarne la gravità none su nel file di configurazione.

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

Per altre informazioni, vedere Come eliminare gli avvisi di analisi del codice.

Esempi di pseudo-codice

Violazione del nome dell'enumerazione

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

Violazione di valore intero

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

Soluzione

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: Non usare protocolli di sicurezza deprecati

CA5386: Evitare il valore SecurityProtocolType hardcoding

CA5397: Non usare valori SslProtocols deprecati