CA5386: Hindari mengodekan nilai SecurityProtocolType secara permanen
Properti | Nilai |
---|---|
ID Aturan | CA5386 |
Judul | Hindari nilai SecurityProtocolType hardcoding |
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.Net.SecurityProtocolType yang aman tetapi di-hardcode secara permanen direferensikan.
- Nilai bilangan bulat yang mewakili versi protokol aman ditetapkan ke variabel SecurityProtocolType.
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 hardcoding versi protokol dan targetkan setidaknya .NET Framework v4.7.1. 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
Anda dapat menyembunyikan peringatan ini jika aplikasi Anda menargetkan .NET Framework v4.6.2 atau yang lebih lama dan dapat berjalan di komputer yang memiliki default yang tidak 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 CA5386
// The code that's violating the rule is on this line.
#pragma warning restore CA5386
Untuk menonaktifkan aturan untuk file, folder, atau proyek, atur tingkat keparahannya ke none
dalam file konfigurasi.
[*.{cs,vb}]
dotnet_diagnostic.CA5386.severity = none
Untuk informasi selengkapnya, lihat Cara menyembunyikan peringatan analisis kode.
Contoh kode semu
Pelanggaran nama enumerasi
using System;
using System.Net;
public class ExampleClass
{
public void ExampleMethod()
{
// CA5386 violation
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
}
}
Imports System
Imports System.Net
Public Class TestClass
Public Sub ExampleMethod()
' CA5386 violation
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
End Sub
End Class
Pelanggaran nilai bilangan bulat
using System;
using System.Net;
public class ExampleClass
{
public void ExampleMethod()
{
// CA5386 violation
ServicePointManager.SecurityProtocol = (SecurityProtocolType) 3072; // TLS 1.2
}
}
Imports System
Imports System.Net
Public Class TestClass
Public Sub ExampleMethod()
' CA5386 violation
ServicePointManager.SecurityProtocol = CType(3072, SecurityProtocolType) ' TLS 1.2
End Sub
End Class
Solusi
using System;
using System.Net;
public class TestClass
{
public void TestMethod()
{
// Let the operating system decide what TLS protocol version to use.
// See https://learn.microsoft.com/dotnet/framework/network-programming/tls
}
}
Imports System
Imports System.Net
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
End Sub
End Class
Aturan terkait
CA5364: Jangan gunakan protokol keamanan yang tidak digunakan lagi
CA5397: Jangan gunakan nilai SslProtocols yang tidak digunakan lagi
CA5398: Hindari nilai SslProtocols yang dikodekan secara permanen