Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
| Свойство | Значение |
|---|---|
| Идентификатор правила | CA5368 |
| Заголовок | задайте ViewStateUserKey для классов, производных от Page |
| Категория | Безопасность |
| Исправление является критическим или не критическим | неразрывный |
| Включен по умолчанию в .NET 10 | Нет |
| Применимые языки | C# и Visual Basic |
Причина
Свойство Page.ViewStateUserKey не назначено в методе Page.OnInit или Page_Init.
Описание правила
При разработке веб-формы ASP.NET следует учитывать атаки с подделкой межсайтовых запросов (CSRF). Атака CSRF позволяет отправлять вредоносные запросы от пользователя, прошедшего проверку подлинности, на вашу веб-форму ASP.NET.
Одним из способов защиты от атак CSRF в веб-форме ASP.NET является задание непредсказуемой и уникальной для сеанса строки в качестве значения свойства ViewStateUserKey страницы. Дополнительные сведения см. в статье Сведения о предотвращении сетевых атак с помощью встроенных функций ASP.NET.
Устранение нарушений
Задайте в качестве значения свойства ViewStateUserKey непредсказуемую и уникальную строку на сеанс. Например, если используется состояние сеанса ASP.NET, HttpSessionState.SessionID будет работать.
Когда лучше отключить предупреждения
Можно отключить вывод предупреждений для этого правила в следующих случаях:
- Страница веб-формы ASP.NET не выполняет никаких конфиденциальных операций.
- Атаки с подделкой межсайтовых запросов смягчаются способом, который не обнаруживается этим правилом. Например, если страница наследует от главной страницы, которая содержит защиту от CSRF.
Отключение предупреждений
Если вы просто хотите отключить одно нарушение, добавьте директивы препроцессора в исходный файл, чтобы отключить и повторно включить правило.
#pragma warning disable CA5368
// The code that's violating the rule is on this line.
#pragma warning restore CA5368
Чтобы отключить правило для файла, папки или проекта, задайте его серьезность none в файле конфигурации.
[*.{cs,vb}]
dotnet_diagnostic.CA5368.severity = none
Дополнительные сведения см. в разделе Практическое руководство. Скрытие предупреждений анализа кода.
Примеры псевдокода
Нарушение
using System;
using System.Web.UI;
class ExampleClass : Page
{
protected override void OnInit (EventArgs e)
{
}
}
Решение
using System;
using System.Web.UI;
class ExampleClass : Page
{
protected override void OnInit (EventArgs e)
{
// Assuming that your page makes use of ASP.NET session state and the SessionID is stable.
ViewStateUserKey = Session.SessionID;
}
}