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 9 | No |
Penyebab
Aturan ini diaktifkan ketika salah satu kondisi berikut terpenuhi:
- Nilai yang tidak digunakan System.Security.Authentication.SslProtocols lagi direferensikan.
- Nilai bilangan bulat yang mewakili nilai yang tidak digunakan lagi ditetapkan ke SslProtocols variabel, digunakan sebagai SslProtocols nilai pengembalian, atau digunakan sebagai SslProtocols argumen.
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
Aturan terkait
CA5364: Jangan gunakan protokol keamanan yang tidak digunakan lagi
CA5386: Hindari mengodekan nilai SecurityProtocolType secara permanen
CA5398: Hindari nilai SslProtocols yang dikodekan secara permanen