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 9 | No |
Penyebab
Aturan ini diaktifkan ketika salah satu kondisi berikut terpenuhi:
- Nilai System.Security.Authentication.SslProtocols yang aman tetapi di-hardcode secara permanen direferensikan.
- Nilai bilangan bulat yang mewakili versi protokol aman ditetapkan ke SslProtocols variabel, digunakan sebagai SslProtocols nilai pengembalian, atau digunakan sebagai SslProtocols argumen.
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
Aturan terkait
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