Bagikan melalui


CA5394: Jangan gunakan keacakan yang tidak aman

Properti Nilai
ID Aturan CA5394
Judul Jangan gunakan keacakan yang tidak aman
Golongan Keamanan
Perbaikan bersifat disruptif atau non-disruptif Non-disruptif
Diaktifkan secara default di .NET 8 Tidak

Penyebab

Salah satu metode System.Random dipanggil.

Deskripsi aturan

Menggunakan generator nomor pseudo-acak yang lemah secara kriptografis memungkinkan penyerang memprediksi nilai sensitif keamanan apa yang akan dihasilkan.

Cara memperbaiki pelanggaran

Jika Anda memerlukan nilai yang tidak dapat diprediksi untuk keamanan, gunakan generator angka acak yang kuat secara kriptografis seperti System.Security.Cryptography.RandomNumberGenerator atau System.Security.Cryptography.RNGCryptoServiceProvider.

Kapan harus menekan peringatan

Aman untuk menekan peringatan dari aturan ini jika Anda yakin bahwa angka pseudo-random yang lemah tidak digunakan dengan cara yang sensitif terhadap keamanan.

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

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

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

Untuk informasi selengkapnya, lihat Cara menyembunyikan peringatan analisis kode.

Contoh kode semu

Pelanggaran

using System;

class ExampleClass
{
    public void ExampleMethod(Random random)
    {
        var sensitiveVariable = random.Next();
    }
}

Solusi

using System;
using System.Security.Cryptography;

class ExampleClass
{
    public void ExampleMethod(int toExclusive)
    {
        var sensitiveVariable = RandomNumberGenerator.GetInt32(toExclusive);
    }
}