CA5365: Nie wyłączaj sprawdzania nagłówka HTTP
Właściwości | Wartość |
---|---|
Identyfikator reguły | CA5365 |
Tytuł | Nie wyłączaj sprawdzania nagłówka HTTP |
Kategoria | Bezpieczeństwo |
Poprawka powodująca niezgodność lub niezgodność | Niezgodność |
Domyślnie włączone na platformie .NET 9 | 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;
}
}