Bagikan melalui


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 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 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

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