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
Düzeltme bozucu ya da bozmayan olabilir Kesintisiz
.NET 10'da varsayılan olarak etkin Hayır
Geçerli diller C# ve Visual Basic

Neden

System.Random'in yöntemlerinden 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.RandomNumberGeneratorgibi System.Security.Cryptography.RNGCryptoServiceProvider ş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);
    }
}