Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
| Proprietà | valore |
|---|---|
| ID regola | CA5386 |
| Title | Evitare di codificare in modo rigido il valore di SecurityProtocolType. |
| Categoria | Sicurezza |
| La correzione causa un'interruzione o meno | Non rompente |
| Abilitato per impostazione predefinita in .NET 10 | No |
| Linguaggi applicabili | C# e Visual Basic |
Causa
Questa regola viene attivata quando vengono soddisfatte una delle condizioni seguenti:
- È stato fatto riferimento a un valore sicuro ma codificato in modo fisso System.Net.SecurityProtocolType.
- Un valore intero che rappresenta una versione del protocollo sicuro è stato assegnato a una SecurityProtocolType variabile.
I valori sicuri 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 codificare in modo fisso una versione del protocollo e assicurarsi di supportare almeno il .NET Framework v4.7.1. Per altre informazioni, vedere Procedure consigliate per Transport Layer Security (TLS) con .NET Framework.
Come correggere le violazioni
Non definire in modo rigido le versioni del protocollo TLS.
Quando eliminare gli avvisi
È possibile eliminare questo avviso se l'applicazione è destinata a .NET Framework v4.6.2 o versioni precedenti e può essere eseguita in un computer con impostazioni predefinite non 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 CA5386
// The code that's violating the rule is on this line.
#pragma warning restore CA5386
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.CA5386.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()
{
// CA5386 violation
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
}
}
Imports System
Imports System.Net
Public Class TestClass
Public Sub ExampleMethod()
' CA5386 violation
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
End Sub
End Class
Violazione di valore intero
using System;
using System.Net;
public class ExampleClass
{
public void ExampleMethod()
{
// CA5386 violation
ServicePointManager.SecurityProtocol = (SecurityProtocolType) 3072; // TLS 1.2
}
}
Imports System
Imports System.Net
Public Class TestClass
Public Sub ExampleMethod()
' CA5386 violation
ServicePointManager.SecurityProtocol = CType(3072, SecurityProtocolType) ' TLS 1.2
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
Regole correlate
CA5364: Non usare protocolli di sicurezza deprecati