Поделиться через


CA5365: не отключайте проверку заголовка HTTP

Свойство Значение
Идентификатор правила CA5365
Заголовок не отключайте проверку заголовков HTTP
Категория Безопасность
Исправление является критическим или не критическим Не критическое
Включен по умолчанию в .NET 9 No

Причина

Задайте для параметра EnableHeaderChecking значение false.

Описание правила

Проверка HTTP-заголовка позволяет кодировать символы возврата каретки и новой строки \r и \n, которые находятся в заголовках ответа. Эта кодировка помогает избежать атак путем внедрения, эксплуатирующих приложение, которое выводит на экран недоверенные данные, содержащиеся в заголовке.

Устранение нарушений

Задайте для параметра EnableHeaderChecking значение true. Или удалите это присваивание значения параметру false, так как он имеет значение по умолчанию true.

Когда лучше отключить предупреждения

Продолжения HTTP-заголовка зависят от заголовков, охватывающих несколько строк, и для них требуется наличие новых строк. Если вам нужно использовать продолжения заголовка, необходимо присвоить свойству EnableHeaderChecking значение false. Проверка заголовков влияет на производительность. Если вы уверены, что уже выполнили все нужные проверки, отключение этой функции может повысить производительность приложения. Перед отключением этой функции убедитесь, что предприняты необходимые меры предосторожности в этой области.

Отключение предупреждений

Если вы просто хотите отключить одно нарушение, добавьте директивы препроцессора в исходный файл, чтобы отключить и повторно включить правило.

#pragma warning disable CA5365
// The code that's violating the rule is on this line.
#pragma warning restore CA5365

Чтобы отключить правило для файла, папки или проекта, задайте его серьезность none в файле конфигурации.

[*.{cs,vb}]
dotnet_diagnostic.CA5365.severity = none

Дополнительные сведения см. в разделе Практическое руководство. Скрытие предупреждений анализа кода.

Примеры псевдокода

using System;
using System.Web.Configuration;

class TestClass
{
    public void TestMethod()
    {
        HttpRuntimeSection httpRuntimeSection = new HttpRuntimeSection();
        httpRuntimeSection.EnableHeaderChecking = false;
    }
}

Решение

using System;
using System.Web.Configuration;

class TestClass
{
    public void TestMethod()
    {
        HttpRuntimeSection httpRuntimeSection = new HttpRuntimeSection();
        httpRuntimeSection.EnableHeaderChecking = true;
    }
}