CA5398: Evitar valores SslProtocols codificados de forma rígida
Propiedad | Value |
---|---|
Identificador de la regla | CA5398 |
Título | Evitar valores SslProtocols codificados de forma rígida |
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 seguro pero codificado de forma rígida System.Security.Authentication.SslProtocols.
- Un valor entero que representa una versión de protocolo seguro se asignó a una variable SslProtocols, se utiliza como un valor devuelto SslProtocols o se utiliza como argumento SslProtocols.
Los valores seguros son:
- Tls12
- Tls13
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 TLS 1.0 y TLS 1.1 están en desuso, mientras que las versiones TLS 1.2 y TLS 1.3 están actualizadas. En el futuro, TLS 1.2 y TLS 1.3 pueden quedar en desuso. Para asegurarse de que la aplicación sigue siendo segura, evite codificar de forma rígida una versión del protocolo. Para obtener más información, vea Procedimientos recomendados sobre la seguridad de la capa de transporte (TLS) con .NET Framework.
Cómo corregir infracciones
No codifique de forma rígida las versiones del protocolo TLS.
Cuándo suprimir las advertencias
Es seguro suprimir una advertencia si tiene que conectarse a un servicio heredado que no se puede actualizar para usar versiones de protocolo TLS futuras.
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 CA5398
// The code that's violating the rule is on this line.
#pragma warning restore CA5398
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.CA5398.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()
{
// 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
Infracción de valor entero
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
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