CA5394: не используйте небезопасную случайность
Свойство | Значение |
---|---|
Идентификатор правила | CA5394 |
Заголовок | не используйте небезопасные генераторы случайных чисел |
Категория | Безопасность |
Исправление является критическим или не критическим | Не критическое |
Включен по умолчанию в .NET 9 | 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);
}
}