Comparteix a través de


CA5364: No usar protocolos de seguridad en desuso

Propiedad Value
Identificador de la regla CA5364
Título No usar protocolos de seguridad 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:

Los valores en desuso son:

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

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

Infracción de valor entero

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

Solución

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: Evitar codificar el valor SecurityProtocolType de forma rígida

CA5397: No usar valores SslProtocols en desuso

CA5398: Evitar valores SslProtocols codificados de forma rígida