CA5404: не отключать проверки токена
Свойство | Значение |
---|---|
Идентификатор правила | CA5404 |
Заголовок | Не отключайте проверки маркеров |
Категория | Безопасность |
Исправление является критическим или не критическим | Не критическое |
Включен по умолчанию в .NET 9 | No |
Причина
Задание TokenValidationParameters свойствRequireExpirationTime
, или ValidateIssuer
ValidateAudience
ValidateLifetime
в false
значение .
Описание правила
Проверка токенов гарантирует, что при проверке анализируются и проверяются все аспекты. Отключение проверки может привести к появлению брешей в системе безопасности из-за прохождения проверки ненадежными токенами.
Дополнительные сведения о рекомендациях по проверке токенов можно найти на вики-странице библиотеки.
Устранение нарушений
Задайте свойствам TokenValidationParameters RequireExpirationTime
, ValidateAudience
, ValidateIssuer
или ValidateLifetime
значение true
. Или удалите это присваивание значения параметру false
, так как он имеет значение по умолчанию true
.
Когда лучше отключить предупреждения
В подавляющем большинстве случаев такая проверка необходима для обеспечения безопасности потребляющего приложения. Однако иногда такая проверка не требуется, особенно для нестандартных типов токенов. Перед отключением этой проверки убедитесь, что вы полностью оценили последствия с точки зрения безопасности. Дополнительные сведения о преимуществах и недостатках см. на вики-странице библиотеки проверки токенов.
Отключение предупреждений
Если вы просто хотите отключить одно нарушение, добавьте директивы препроцессора в исходный файл, чтобы отключить и повторно включить правило.
#pragma warning disable CA5404
// The code that's violating the rule is on this line.
#pragma warning restore CA5404
Чтобы отключить правило для файла, папки или проекта, задайте его серьезность none
в файле конфигурации.
[*.{cs,vb}]
dotnet_diagnostic.CA5404.severity = none
Дополнительные сведения см. в разделе Практическое руководство. Скрытие предупреждений анализа кода.
Примеры псевдокода
using System;
using Microsoft.IdentityModel.Tokens;
class TestClass
{
public void TestMethod()
{
TokenValidationParameters parameters = new TokenValidationParameters();
parameters.RequireExpirationTime = false;
parameters.ValidateAudience = false;
parameters.ValidateIssuer = false;
parameters.ValidateLifetime = false;
}
}
Решение
using System;
using Microsoft.IdentityModel.Tokens;
class TestClass
{
public void TestMethod()
{
TokenValidationParameters parameters = new TokenValidationParameters();
parameters.RequireExpirationTime = true;
parameters.ValidateAudience = true;
parameters.ValidateIssuer = true;
parameters.ValidateLifetime = true;
}
}