Share via


CA5394: Gebruik geen onveilige willekeurigheid

Eigenschappen Weergegeven als
Regel-id CA5394
Titel Gebruik geen onveilige willekeurigheid
Categorie Beveiliging
Oplossing is brekend of niet-brekend Niet-brekend
Standaard ingeschakeld in .NET 8 Nee

Oorzaak

Een van de methoden van System.Random wordt aangeroepen.

Beschrijving van regel

Door een cryptografisch zwakke pseudo-willekeurige getalgenerator te gebruiken, kan een aanvaller voorspellen welke beveiligingsgevoelige waarde wordt gegenereerd.

Schendingen oplossen

Als u een onvoorspelbare waarde voor beveiliging nodig hebt, gebruikt u een cryptografisch sterke generator voor willekeurige getallen, zoals System.Security.Cryptography.RandomNumberGenerator of System.Security.Cryptography.RNGCryptoServiceProvider.

Wanneer waarschuwingen onderdrukken

Het is veilig om waarschuwingen van deze regel te onderdrukken als u zeker weet dat de zwakke pseudo-willekeurige getallen niet op een beveiligingsgevoelige manier worden gebruikt.

Een waarschuwing onderdrukken

Als u slechts één schending wilt onderdrukken, voegt u preprocessorrichtlijnen toe aan uw bronbestand om de regel uit te schakelen en vervolgens opnieuw in te schakelen.

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

Als u de regel voor een bestand, map of project wilt uitschakelen, stelt u de ernst none ervan in op het configuratiebestand.

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

Zie Codeanalysewaarschuwingen onderdrukken voor meer informatie.

Voorbeelden van pseudocode

Schending

using System;

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

Oplossing

using System;
using System.Security.Cryptography;

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