Бөлісу құралы:


CA5396: для HttpCookie задайте значение HttpOnly равным true

Свойство Значение
Идентификатор правила CA5396
Заголовок Установите для параметра HttpOnly в объекте HttpCookie значение true
Категория Безопасность
Исправление является критическим или не критическим неразрывный
Включен по умолчанию в .NET 10 Нет
Применимые языки C# и Visual Basic

Причина

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;
    }
}