Bagikan melalui


CA5398: Hindari nilai SslProtocols yang dikodekan secara permanen

Properti Nilai
ID Aturan CA5398
Judul Hindari nilai SslProtocols yang dikodekan secara permanen
Golongan Keamanan
Perbaikan bersifat disruptif atau non-disruptif Non-disruptif
Diaktifkan secara default di .NET 8 Tidak

Penyebab

Aturan ini diaktifkan ketika salah satu kondisi berikut terpenuhi:

Nilai brankas adalah:

  • Tls12
  • Tls13

Deskripsi aturan

Keamanan Lapisan Transportasi (TLS) mengamankan komunikasi antar komputer, paling umum dengan Hypertext Transfer Protocol Secure (HTTPS). Versi protokol TLS 1.0 dan TLS 1.1 tidak digunakan lagi, sementara TLS 1.2 dan TLS 1.3 adalah yang terbaru. Di masa mendatang, TLS 1.2 dan TLS 1.3 mungkin tidak digunakan lagi. Untuk memastikan bahwa aplikasi Anda tetap aman, hindari mengodekan versi protokol secara permanen. Untuk informasi selengkapnya, lihat Praktik terbaik Keamanan Lapisan Transportasi (TLS) dengan .NET Framework.

Cara memperbaiki pelanggaran

Jangan meng-hardcode versi protokol TLS.

Kapan harus menekan peringatan

Aman untuk menekan peringatan jika Anda perlu terhubung ke layanan warisan yang tidak dapat ditingkatkan untuk menggunakan versi protokol TLS di masa mendatang.

Menyembunyikan peringatan

Jika Anda hanya ingin menyembunyikan satu pelanggaran, tambahkan arahan praprosedur ke file sumber Anda untuk dinonaktifkan lalu aktifkan kembali aturannya.

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

Untuk menonaktifkan aturan untuk file, folder, atau proyek, atur tingkat keparahannya ke none dalam file konfigurasi.

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

Untuk informasi selengkapnya, lihat Cara menyembunyikan peringatan analisis kode.

Contoh kode semu

Pelanggaran nama enumerasi

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

Pelanggaran nilai bilangan bulat

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

Solusi

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: Jangan gunakan protokol keamanan yang tidak digunakan lagi

CA5386: Hindari mengodekan nilai SecurityProtocolType secara permanen

CA5397: Jangan gunakan nilai SslProtocols yang tidak digunakan lagi