Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
| 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 10 | 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);
}
}