CA5395: атрибут Miss HttpVerb для методов действий
Свойство | Значение |
---|---|
Идентификатор правила | CA5395 |
Заголовок | отсутствует атрибут HttpVerb для методов действия |
Категория | Безопасность |
Исправление является критическим или не критическим | Не критическое |
Включен по умолчанию в .NET 9 | No |
Причина
Не указывайте явно тип HTTP-запроса для методов действия.
Описание правила
Все методы действий, которые создают, изменяют, удаляют или иным образом модифицируют данные, должны быть защищены с помощью атрибута защиты от подделки межсайтовых запросов. Операция GET должна выполняться безопасным способом, то есть не иметь побочных эффектов и не изменять существующие данные.
Устранение нарушений
Пометьте методы действия атрибутом HttpVerb
.
Когда лучше отключить предупреждения
Вы можете безопасно отключить предупреждения, связанные с этим правилом, в следующих случаях.
- Вы уверены, что в методе действия не выполняются никакие операции изменения. Или это не метод действия.
- Для устранения уязвимостей CSRF используются решения, не связанные с атрибутами маркера для защиты от подделки. Дополнительные сведения см. на странице Предотвращение атак с использованием подделки межсайтовых запросов (XSRF/CSRF) в ASP.NET Core.
Отключение предупреждений
Если вы просто хотите отключить одно нарушение, добавьте директивы препроцессора в исходный файл, чтобы отключить и повторно включить правило.
#pragma warning disable CA5395
// The code that's violating the rule is on this line.
#pragma warning restore CA5395
Чтобы отключить правило для файла, папки или проекта, задайте его серьезность none
в файле конфигурации.
[*.{cs,vb}]
dotnet_diagnostic.CA5395.severity = none
Дополнительные сведения см. в разделе Практическое руководство. Скрытие предупреждений анализа кода.
Примеры псевдокода
Нарушение
using Microsoft.AspNetCore.Mvc;
[ValidateAntiForgeryToken]
class BlahController : Controller
{
}
class ExampleController : Controller
{
public IActionResult ExampleAction()
{
return null;
}
}
Решение
using Microsoft.AspNetCore.Mvc;
[ValidateAntiForgeryToken]
class BlahController : Controller
{
}
class ExampleController : Controller
{
[HttpGet]
public IActionResult ExampleAction()
{
return null;
}
}