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 8'de 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 noneolarak 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);
    }
}