CA5365: Nie wyłączaj sprawdzania nagłówka HTTP

Właściwości Wartość
Identyfikator reguły CA5365
Stanowisko Nie wyłączaj sprawdzania nagłówka HTTP
Kategoria Bezpieczeństwo
Poprawka powodująca niezgodność lub niezgodność Niezgodność
Domyślnie włączone na platformie .NET 8 Nie.

Przyczyna

Ustaw wartość opcji EnableHeaderChecking na false.

Opis reguły

Sprawdzanie nagłówka HTTP umożliwia kodowanie znaków powrotu karetki i znaków \r nowego wiersza oraz \n, które znajdują się w nagłówkach odpowiedzi. To kodowanie może pomóc uniknąć ataków polegających na wstrzyknięciu, które wykorzystują aplikację, która echem niezaufanych danych zawartych w nagłówku.

Jak naprawić naruszenia

Ustaw wartość opcji EnableHeaderChecking na true. Możesz też usunąć przypisanie do false , ponieważ wartość domyślna to true.

Kiedy pomijać ostrzeżenia

Kontynuacje nagłówka HTTP polegają na nagłówkach obejmujących wiele wierszy i wymagają w nich nowych wierszy. Jeśli musisz użyć kontynuacji nagłówka, musisz ustawić EnableHeaderChecking właściwość na false. Istnieje wpływ na wydajność sprawdzania nagłówków. Jeśli masz pewność, że już przeprowadzasz odpowiednie kontrole, wyłączenie tej funkcji może poprawić wydajność aplikacji. Przed wyłączeniem tej funkcji upewnij się, że już podejmujesz odpowiednie środki ostrożności w tym obszarze.

Pomijanie ostrzeżenia

Jeśli chcesz po prostu pominąć pojedyncze naruszenie, dodaj dyrektywy preprocesora do pliku źródłowego, aby wyłączyć, a następnie ponownie włączyć regułę.

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

Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none w pliku konfiguracji.

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

Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia dotyczące analizy kodu.

Przykłady przykładów kodu przykładowego

using System;
using System.Web.Configuration;

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

Rozwiązanie

using System;
using System.Web.Configuration;

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