CA5397: No usar valores SslProtocols en desuso
Propiedad | Value |
---|---|
Identificador de la regla | CA5397 |
Título | No usar valores SslProtocols en desuso |
Categoría | Seguridad |
La corrección interrumpe o no interrumpe | Poco problemático |
Habilitado de forma predeterminada en .NET 9 | No |
Causa
Esta regla se desencadena cuando se cumple alguna de las condiciones siguientes:
- Se hizo referencia a un valor System.Security.Authentication.SslProtocols en desuso.
- Un valor entero que representa un valor en desuso se ha asignado a una variable SslProtocols, se ha usado como un valor devuelto SslProtocols o se ha empleado como argumento SslProtocols.
Los valores en desuso son:
- Ssl2
- Ssl3
- Tls
- Tls10
- Tls11
Descripción de la regla
La seguridad de la capa de transporte (TLS) protege la comunicación entre equipos, normalmente con el protocolo HTTPS. Las versiones de protocolo anteriores de TLS son menos seguras que TLS 1.2 y TLS 1.3 y es más probable que tengan nuevas vulnerabilidades. Evite las versiones anteriores del protocolo, para minimizar el riesgo. Para obtener instrucciones sobre cómo identificar y eliminar versiones de protocolo en desuso, vea Solución del problema con TLS 1.0, 2.ª edición.
Cómo corregir infracciones
No use versiones del protocolo TLS en desuso.
Cuándo suprimir las advertencias
Puede suprimir esta advertencia si:
- La referencia a la versión del protocolo en desuso no se usa para habilitar una versión en desuso.
- Debe conectarse a un servicio heredado que no se puede actualizar para usar configuraciones TLS seguras.
Supresión de una advertencia
Si solo quiere suprimir una única infracción, agregue directivas de preprocesador al archivo de origen para deshabilitar y volver a habilitar la regla.
#pragma warning disable CA5397
// The code that's violating the rule is on this line.
#pragma warning restore CA5397
Para deshabilitar la regla de un archivo, una carpeta o un proyecto, establezca su gravedad en none
del archivo de configuración.
[*.{cs,vb}]
dotnet_diagnostic.CA5397.severity = none
Para obtener más información, consulte Procedimiento para suprimir advertencias de análisis de código.
Ejemplos de pseudocódigo
Infracción de nombre de enumeración
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
Infracción de valor entero
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
Solución
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
Reglas relacionadas
CA5364: No usar protocolos de seguridad en desuso
CA5386: Evitar codificar el valor SecurityProtocolType de forma rígida
CA5398: Evitar valores SslProtocols codificados de forma rígida