CA5394: Non usare casualità non sicura
Proprietà | valore |
---|---|
ID regola | CA5394 |
Title | Non usare la casualità non sicura |
Categoria | Sicurezza |
La correzione causa un'interruzione o meno | Non causa un'interruzione |
Abilitato per impostazione predefinita in .NET 9 | 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);
}
}