Bagikan melalui


CA5397: Jangan gunakan nilai SslProtocols yang tidak digunakan lagi

Properti Nilai
ID Aturan CA5397
Judul Jangan gunakan nilai SslProtocols yang tidak digunakan lagi
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 yang tidak digunakan lagi adalah:

  • Ssl2
  • Ssl3
  • Tls
  • Tls10
  • Tls11

Deskripsi aturan

Keamanan Lapisan Transportasi (TLS) mengamankan komunikasi antar komputer, paling umum dengan Hypertext Transfer Protocol Secure (HTTPS). Versi protokol TLS yang lebih lama kurang aman dibandingkan TLS 1.2 dan TLS 1.3 dan lebih cenderung memiliki kerentanan baru. Hindari versi protokol yang lebih lama untuk meminimalkan risiko. Untuk panduan tentang mengidentifikasi dan menghapus versi protokol yang tidak digunakan lagi, lihat Memecahkan Masalah TLS 1.0, Edisi ke-2.

Cara memperbaiki pelanggaran

Jangan gunakan versi protokol TLS yang tidak digunakan lagi.

Kapan harus menekan peringatan

Anda dapat menekan peringatan ini jika:

  • Referensi ke versi protokol yang tidak digunakan lagi tidak digunakan untuk mengaktifkan versi yang tidak digunakan lagi.
  • Anda perlu terhubung ke layanan warisan yang tidak dapat ditingkatkan untuk menggunakan konfigurasi TLS yang aman.

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

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

[*.{cs,vb}]
dotnet_diagnostic.CA5397.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()
    {
        // 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

Pelanggaran nilai bilangan bulat

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

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

CA5398: Hindari nilai SslProtocols yang dikodekan secara permanen