CA5394: Güvenli olmayan rastgelelik kullanmayın
Özellik | Değer |
---|---|
Kural Kimliği | CA5394 |
Başlık | Güvenli olmayan rastgelelik kullanma |
Kategori | Güvenlik |
Hataya neden olan veya bozulmayan düzeltme | Hataya neden olmayan |
.NET 9'da varsayılan olarak etkin | Hayır |
Neden
yöntemlerinden System.Random biri çağrılır.
Kural açıklaması
Kriptografik olarak zayıf bir sahte rastgele sayı oluşturucu kullanmak, saldırganın hangi güvenlik duyarlı değerin oluşturulacağını tahmin etmesine olanak tanıyabilir.
İhlalleri düzeltme
Güvenlik için öngörülemeyen bir değere ihtiyacınız varsa veya System.Security.Cryptography.RNGCryptoServiceProvidergibi System.Security.Cryptography.RandomNumberGenerator şifreleme açısından güçlü bir rastgele sayı oluşturucu kullanın.
Uyarıların ne zaman bastırılması gerekiyor?
Zayıf sahte rastgele sayıların güvenliğe duyarlı bir şekilde kullanılmayağından eminseniz, bu kuraldan gelen uyarıları gizlemeniz güvenlidir.
Uyarıyı gizleme
Yalnızca tek bir ihlali engellemek istiyorsanız, kuralı devre dışı bırakmak ve sonra yeniden etkinleştirmek için kaynak dosyanıza ön işlemci yönergeleri ekleyin.
#pragma warning disable CA5394
// The code that's violating the rule is on this line.
#pragma warning restore CA5394
Bir dosya, klasör veya projenin kuralını devre dışı bırakmak için, yapılandırma dosyasındaki önem derecesini none
olarak ayarlayın.
[*.{cs,vb}]
dotnet_diagnostic.CA5394.severity = none
Daha fazla bilgi için bkz . Kod analizi uyarılarını gizleme.
Sahte kod örnekleri
Ihlal
using System;
class ExampleClass
{
public void ExampleMethod(Random random)
{
var sensitiveVariable = random.Next();
}
}
Çözüm
using System;
using System.Security.Cryptography;
class ExampleClass
{
public void ExampleMethod(int toExclusive)
{
var sensitiveVariable = RandomNumberGenerator.GetInt32(toExclusive);
}
}