Bagikan melalui


CA5401: Jangan gunakan CreateEncryptor dengan IV non-default

Properti Nilai
ID Aturan CA5401
Judul Jangan gunakan CreateEncryptor dengan IV non-default
Golongan Keamanan
Perbaikan bersifat disruptif atau non-disruptif Non-disruptif
Diaktifkan secara default di .NET 8 Tidak

Penyebab

Menggunakan System.Security.Cryptography.SymmetricAlgorithm.CreateEncryptor dengan non-default rgbIV.

Deskripsi aturan

Enkripsi simetris harus selalu menggunakan vektor inisialisasi yang tidak dapat diulang untuk mencegah serangan kamus.

Aturan ini mirip dengan CA5402, tetapi analisis menentukan bahwa vektor inisialisasi jelas merupakan default.

Cara memperbaiki pelanggaran

Gunakan nilai default rgbIV , yaitu, gunakan kelebihan beban System.Security.Cryptography.SymmetricAlgorithm.CreateEncryptor yang tidak memiliki parameter apa pun.

Kapan harus menekan peringatan

Aman untuk menyembunyikan peringatan dari aturan ini jika:

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

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

[*.{cs,vb}]
dotnet_diagnostic.CA5401.severity = none

Untuk informasi selengkapnya, lihat Cara menyembunyikan peringatan analisis kode.

Contoh kode semu

using System.Security.Cryptography;

class ExampleClass
{
    public void ExampleMethod(byte[] rgbIV)
    {
        AesCng aesCng  = new AesCng();
        aesCng.IV = rgbIV;
        aesCng.CreateEncryptor();
    }
}

Solusi

using System.Security.Cryptography;

class ExampleClass
{
    public void ExampleMethod()
    {
        AesCng aesCng  = new AesCng();
        aesCng.CreateEncryptor();
    }
}