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 9 | No |
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);
}
}