CA5394: Använd inte osäker slumpmässighet
Property | Värde |
---|---|
Regel-ID | CA5394 |
Title | Använd inte osäker slumpmässighet |
Kategori | Säkerhet |
Korrigeringen är icke-bakåtkompatibel | Icke-icke-bryta |
Aktiverad som standard i .NET 9 | Nej |
Orsak
En av metoderna System.Random för anropas.
Regelbeskrivning
Om du använder en kryptografiskt svag pseudo-slumptalsgenerator kan en angripare förutsäga vilket säkerhetskänsligt värde som ska genereras.
Så här åtgärdar du överträdelser
Om du behöver ett oförutsägbart värde för säkerhet använder du en kryptografiskt stark slumptalsgenerator som System.Security.Cryptography.RandomNumberGenerator eller System.Security.Cryptography.RNGCryptoServiceProvider.
När du ska ignorera varningar
Det är säkert att ignorera varningar från den här regeln om du är säker på att de svaga pseudo-slumpmässiga talen inte används på ett säkerhetskänsligt sätt.
Ignorera en varning
Om du bara vill förhindra en enda överträdelse lägger du till förprocessordirektiv i källfilen för att inaktivera och aktiverar sedan regeln igen.
#pragma warning disable CA5394
// The code that's violating the rule is on this line.
#pragma warning restore CA5394
Om du vill inaktivera regeln för en fil, mapp eller ett projekt anger du dess allvarlighetsgrad till none
i konfigurationsfilen.
[*.{cs,vb}]
dotnet_diagnostic.CA5394.severity = none
Mer information finns i Så här utelämnar du kodanalysvarningar.
Exempel på pseudokod
Kränkning
using System;
class ExampleClass
{
public void ExampleMethod(Random random)
{
var sensitiveVariable = random.Next();
}
}
Lösning
using System;
using System.Security.Cryptography;
class ExampleClass
{
public void ExampleMethod(int toExclusive)
{
var sensitiveVariable = RandomNumberGenerator.GetInt32(toExclusive);
}
}