Dela via


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);
    }
}