CA5394: Non usare casualità non sicura

Proprietà valore
ID regola CA5394
Titolo Non usare la casualità non sicura
Categoria Sicurezza
Correzione che causa un'interruzione o un'interruzione Nessuna interruzione
Abilitato per impostazione predefinita in .NET 8 No

Causa

Viene richiamato uno dei metodi di System.Random .

Descrizione regola

L'uso di un generatore di numeri pseudo-casuali con crittografia debole può consentire a un utente malintenzionato di prevedere quale valore sensibile alla sicurezza verrà generato.

Come correggere le violazioni

Se è necessario un valore imprevedibile per la sicurezza, usare un generatore di numeri casuali crittograficamente sicuri come System.Security.Cryptography.RandomNumberGenerator o System.Security.Cryptography.RNGCryptoServiceProvider.

Quando eliminare gli avvisi

È possibile eliminare gli avvisi da questa regola se si è certi che i numeri pseudo-casuali deboli non vengano usati in modo sensibile alla sicurezza.

Eliminare un avviso

Se si vuole eliminare una singola violazione, aggiungere direttive del preprocessore al file di origine per disabilitare e quindi riabilitare la regola.

#pragma warning disable CA5394
// The code that's violating the rule is on this line.
#pragma warning restore CA5394

Per disabilitare la regola per un file, una cartella o un progetto, impostarne la gravità none su nel file di configurazione.

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

Per altre informazioni, vedere Come eliminare gli avvisi di analisi del codice.

Esempi di pseudo-codice

Violazione

using System;

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

Soluzione

using System;
using System.Security.Cryptography;

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