CA5396: задайте для HttpOnly значение true для HttpCookie
Свойство | Значение |
---|---|
Идентификатор правила | CA5396 |
Заголовок | установите для параметра HttpOnly объекта HttpCookie значение true |
Категория | Безопасность |
Исправление является критическим или не критическим | Не критическое |
Включен по умолчанию в .NET 9 | No |
Причина
System.Web.HttpCookie.HttpOnly задан как false
. Значение по умолчанию этого свойства равно false
.
Описание правила
Для обеспечения глубокого уровня защиты HTTP-файлы cookie, чувствительные к безопасности, должны быть помечены как HttpOnly. Это означает, что веб-браузеры должны запрещать скриптам доступ к файлам cookie. Внедренные скрипты являются распространенным способом кражи файлов cookie.
Устранение нарушений
Задайте для параметра System.Web.HttpCookie.HttpOnly значение true
.
Когда лучше отключить предупреждения
Если задано глобальное значение HttpOnly, как, например, в следующем примере:
<system.web> ... <httpCookies httpOnlyCookies="true" requireSSL="true" /> </system.web>
Если вы уверены, что в файлах cookie нет конфиденциальных данных.
Отключение предупреждений
Если вы просто хотите отключить одно нарушение, добавьте директивы препроцессора в исходный файл, чтобы отключить и повторно включить правило.
#pragma warning disable CA5396
// The code that's violating the rule is on this line.
#pragma warning restore CA5396
Чтобы отключить правило для файла, папки или проекта, задайте его серьезность none
в файле конфигурации.
[*.{cs,vb}]
dotnet_diagnostic.CA5396.severity = none
Дополнительные сведения см. в разделе Практическое руководство. Скрытие предупреждений анализа кода.
Пример
Нарушение:
using System.Web;
class ExampleClass
{
public void ExampleMethod()
{
HttpCookie httpCookie = new HttpCookie("cookieName");
httpCookie.HttpOnly = false;
}
}
Решение.
using System.Web;
class ExampleClass
{
public void ExampleMethod()
{
HttpCookie httpCookie = new HttpCookie("cookieName");
httpCookie.HttpOnly = true;
}
}