CA5394: не используйте небезопасную случайность

Свойство Значение
Идентификатор правила CA5394
Заголовок не используйте небезопасные генераторы случайных чисел
Категория Безопасность
Исправление является критическим или не критическим Не критическое
Включен по умолчанию в .NET 8 No

Причина

Вызывается один из методов System.Random.

Описание правила

Использование криптографически слабого генератора случайных чисел может позволить злоумышленнику предсказать, какое чувствительное к безопасности значение будет создано.

Устранение нарушений

Если для обеспечения безопасности требуется непредсказуемое значение, используйте криптографически надежный генератор случайных чисел, например System.Security.Cryptography.RandomNumberGenerator или System.Security.Cryptography.RNGCryptoServiceProvider.

Когда лучше отключить предупреждения

Можно безопасно отключить предупреждения из этого правила, если вы уверены, что слабые псевдослучайные числа не используются с учетом требований безопасности.

Отключение предупреждений

Если вы просто хотите отключить одно нарушение, добавьте директивы препроцессора в исходный файл, чтобы отключить и повторно включить правило.

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

Чтобы отключить правило для файла, папки или проекта, задайте его серьезность none в файле конфигурации.

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

Дополнительные сведения см. в разделе Практическое руководство. Скрытие предупреждений анализа кода.

Примеры псевдокода

Нарушение

using System;

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

Решение

using System;
using System.Security.Cryptography;

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