CA5397: Non usare valori SslProtocols deprecati
Proprietà | valore |
---|---|
ID regola | CA5397 |
Title | Non usare valori SslProtocols deprecati |
Categoria | Sicurezza |
La correzione causa un'interruzione o meno | Non causa un'interruzione |
Abilitato per impostazione predefinita in .NET 9 | No |
Causa
Questa regola viene attivata quando vengono soddisfatte una delle condizioni seguenti:
- È stato fatto riferimento a un valore deprecato System.Security.Authentication.SslProtocols .
- Un valore intero che rappresenta un valore deprecato è stato assegnato a una SslProtocols variabile, utilizzato come valore restituito o utilizzato come SslProtocols SslProtocols argomento.
I valori deprecati sono:
- Ssl2
- 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 CA5397
// The code that's violating the rule is on this line.
#pragma warning restore CA5397
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.CA5397.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()
{
// CA5397 violation for using Tls11
SslProtocols protocols = SslProtocols.Tls11 | SslProtocols.Tls12;
}
}
Imports System
Imports System.Security.Authentication
Public Class TestClass
Public Sub ExampleMethod()
' CA5397 violation for using Tls11
Dim sslProtocols As SslProtocols = SslProtocols.Tls11 Or SslProtocols.Tls12
End Sub
End Class
Violazione di valore intero
using System;
using System.Security.Authentication;
public class ExampleClass
{
public void ExampleMethod()
{
// CA5397 violation
SslProtocols sslProtocols = (SslProtocols) 768; // TLS 1.1
}
}
Imports System
Imports System.Security.Authentication
Public Class TestClass
Public Sub ExampleMethod()
' CA5397 violation
Dim sslProtocols As SslProtocols = CType(768, SslProtocols) ' TLS 1.1
End Sub
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
Regole correlate
CA5364: Non usare protocolli di sicurezza deprecati