CA5394: Nie używaj niezabezpieczonej losowości
Właściwości | Wartość |
---|---|
Identyfikator reguły | CA5394 |
Tytuł | Nie używaj niezabezpieczonej losowości |
Kategoria | Bezpieczeństwo |
Poprawka powodująca niezgodność lub niezgodność | Niezgodność |
Domyślnie włączone na platformie .NET 9 | Nie. |
Przyczyna
Wywoływana jest jedna z metod System.Random .
Opis reguły
Użycie kryptograficznie słabego generatora liczb pseudolosowych może umożliwić atakującemu przewidywanie, jaka wartość wrażliwa na zabezpieczenia zostanie wygenerowana.
Jak naprawić naruszenia
Jeśli potrzebujesz nieprzewidywalnej wartości zabezpieczeń, użyj kryptograficznie silnego generatora liczb losowych, takiego jak System.Security.Cryptography.RandomNumberGenerator lub System.Security.Cryptography.RNGCryptoServiceProvider.
Kiedy pomijać ostrzeżenia
Można bezpiecznie pominąć ostrzeżenia z tej reguły, jeśli masz pewność, że słabe liczby pseudolosowe nie są używane w sposób poufny na zabezpieczenia.
Pomijanie ostrzeżenia
Jeśli chcesz po prostu pominąć pojedyncze naruszenie, dodaj dyrektywy preprocesora do pliku źródłowego, aby wyłączyć, a następnie ponownie włączyć regułę.
#pragma warning disable CA5394
// The code that's violating the rule is on this line.
#pragma warning restore CA5394
Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none
w pliku konfiguracji.
[*.{cs,vb}]
dotnet_diagnostic.CA5394.severity = none
Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia dotyczące analizy kodu.
Przykłady przykładów kodu przykładowego
Naruszenie
using System;
class ExampleClass
{
public void ExampleMethod(Random random)
{
var sensitiveVariable = random.Next();
}
}
Rozwiązanie
using System;
using System.Security.Cryptography;
class ExampleClass
{
public void ExampleMethod(int toExclusive)
{
var sensitiveVariable = RandomNumberGenerator.GetInt32(toExclusive);
}
}