CA5364: Non usare protocolli di sicurezza deprecati

Proprietà valore
ID regola CA5364
Titolo Non usare protocolli di sicurezza deprecati
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:

I valori deprecati sono:

  • Ssl3
  • Tls
  • Tls10
  • Tls11

Descrizione regola

Transport Layer Security (TLS) protegge la comunicazione tra computer, in genere con PROTOCOLLO HTTPS (Hypertext Transfer Protocol Secure). Le versioni precedenti del protocollo TLS sono meno sicure di TLS 1.2 e TLS 1.3 e hanno maggiori probabilità di avere nuove vulnerabilità. Evitare versioni precedenti del protocollo per ridurre al minimo i rischi. Per indicazioni sull'identificazione e la rimozione delle versioni deprecate del protocollo, vedere Risoluzione del problema tls 1.0, seconda edizione.

Come correggere le violazioni

Non usare versioni deprecate del protocollo TLS.

Quando eliminare gli avvisi

È possibile eliminare questo avviso se:

  • Il riferimento alla versione deprecata del protocollo non viene usato per abilitare una versione deprecata.
  • È necessario connettersi a un servizio legacy che non può essere aggiornato per usare configurazioni TLS sicure.

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

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.CA5364.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.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

Violazione di valore intero

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

Soluzione

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: Evitare il valore SecurityProtocolType hardcoding

CA5397: Non usare valori SslProtocols deprecati

CA5398: evitare valori SslProtocols hardcoded