Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Свойство | Значение |
---|---|
Идентификатор правила | CA5402 |
Заголовок | используйте CreateEncryptor с вектором инициализации по умолчанию |
Категория | Безопасность |
Исправление является критическим или не критическим | Не критическое |
Включен по умолчанию в .NET 9 | No |
rgbIV
не может быть заданным по умолчанию при использовании System.Security.Cryptography.SymmetricAlgorithm.CreateEncryptor.
Для предотвращения атак перебором по словарю в симметричном шифровании всегда нужно использовать невоспроизводимый вектор инициализации.
Это правило похоже на правило CA5401, но анализ не может определить, что вектор инициализации, несомненно, является значением по умолчанию.
Используйте значение по умолчанию rgbIV
явным образом, то есть используйте перегрузку для System.Security.Cryptography.SymmetricAlgorithm.CreateEncryptor без параметров.
Можно отключить вывод предупреждений для этого правила в следующих случаях:
- Параметр
rgbIV
был создан System.Security.Cryptography.SymmetricAlgorithm.GenerateIV. - Вы уверены, что параметр
rgbIV
действительно является случайным и не воспроизводимым. - Вы уверены, что используется вектор инициализации.
Если вы просто хотите отключить одно нарушение, добавьте директивы препроцессора в исходный файл, чтобы отключить и повторно включить правило.
#pragma warning disable CA5402
// The code that's violating the rule is on this line.
#pragma warning restore CA5402
Чтобы отключить правило для файла, папки или проекта, задайте его серьезность none
в файле конфигурации.
[*.{cs,vb}]
dotnet_diagnostic.CA5402.severity = none
Дополнительные сведения см. в разделе Практическое руководство. Скрытие предупреждений анализа кода.
using System;
using System.Security.Cryptography;
class ExampleClass
{
public void ExampleMethod(byte[] rgbIV)
{
AesCng aesCng = new AesCng();
Random r = new Random();
if (r.Next(6) == 4)
{
aesCng.IV = rgbIV;
}
aesCng.CreateEncryptor();
}
}
using System.Security.Cryptography;
class ExampleClass
{
public void ExampleMethod()
{
AesCng aesCng = new AesCng();
aesCng.CreateEncryptor();
}
}
Отзыв о .NET
.NET — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв: