Compartilhar via


CA5398: Evitar valores de SslProtocols pré-definidos

Propriedade Valor
ID da regra CA5398
Título Evitar valores de SslProtocols codificados
Categoria Segurança
Correção interruptiva ou sem interrupção Inquebrável
Habilitado por padrão no .NET 10 Não
Idiomas aplicáveis C# e Visual Basic

Causa

Essa regra é acionada quando uma das seguintes condições é atendida:

Os valores seguros são:

  • Tls12
  • Tls13

Descrição da regra

O TLS (Transport Layer Security) protege a comunicação entre computadores, mais comumente com o protocolo HTTPS. As versões do protocolo TLS 1.0 e TLS 1.1 são preteridas, enquanto o TLS 1.2 e o TLS 1.3 representam as atuais. No futuro, o TLS 1.2 e o TLS 1.3 poderão ser preteridos. Para garantir que o aplicativo permaneça seguro, evite codificar uma versão de protocolo. Para mais informações, confira Práticas recomendadas de Segurança da Camada de Transporte (TLS) com o .NET Framework.

Como corrigir violações

Não codifique versões do protocolo TLS manualmente.

Quando suprimir avisos

É seguro suprimir um aviso se você precisar se conectar a um serviço herdado que não pode ser atualizado para usar versões futuras do protocolo TLS.

Suprimir um aviso

Para suprimir apenas uma violação, adicione diretivas de pré-processador ao arquivo de origem a fim de desabilitar e, em seguida, reabilitar a regra.

#pragma warning disable CA5398
// The code that's violating the rule is on this line.
#pragma warning restore CA5398

Para desabilitar a regra em um arquivo, uma pasta ou um projeto, defina a severidade como none no arquivo de configuração.

[*.{cs,vb}]
dotnet_diagnostic.CA5398.severity = none

Para obter mais informações, confira Como suprimir avisos de análise de código.

Exemplos de pseudocódigo

Violação de nome da enumeração

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

Violação de valor inteiro

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

Solução

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

CA5364: Não use protocolos de segurança preteridos

CA5386: Evitar codificar o valor SecurityProtocolType

CA5397: Não use valores obsoletos de SslProtocols