CA5365: Nezakazujte kontrolu hlaviček HTTP
Vlastnost | Hodnota |
---|---|
ID pravidla | CA5365 |
Název | Nezakazovat kontrolu hlaviček HTTP |
Kategorie | Zabezpečení |
Oprava způsobující chybu nebo chybu způsobující chybu | Nenarušující |
Povoleno ve výchozím nastavení v .NET 9 | No |
Příčina
Nastavte EnableHeaderChecking na hodnotu false
.
Popis pravidla
Kontrola hlaviček HTTP umožňuje kódování znaků návratu na začátek řádku a nového řádku \r
a \n
, které jsou nalezeny v hlavičce odpovědi. Toto kódování může pomoct vyhnout se útokům prostřednictvím injektáže, které zneužívají aplikaci, která odráží nedůvěryhodná data obsažená v hlavičce.
Jak opravit porušení
Nastavte EnableHeaderChecking na hodnotu true
. Nebo odeberte přiřazení false
, protože výchozí hodnota je true
.
Kdy potlačit upozornění
Pokračování hlaviček HTTP závisí na záhlaví, která pokrývají více řádků a vyžadují v nich nové řádky. Pokud potřebujete použít pokračování záhlaví, je nutné nastavit EnableHeaderChecking vlastnost na false
. Kontrola hlaviček má vliv na výkon. Pokud jste si jistí, že už provádíte správné kontroly, vypnutí této funkce může zlepšit výkon aplikace. Než tuto funkci zakážete, ujistěte se, že už v této oblasti provádíte správná opatření.
Potlačení upozornění
Pokud chcete pouze potlačit jedno porušení, přidejte do zdrojového souboru direktivy preprocesoru, abyste pravidlo zakázali a znovu povolili.
#pragma warning disable CA5365
// The code that's violating the rule is on this line.
#pragma warning restore CA5365
Pokud chcete pravidlo pro soubor, složku nebo projekt zakázat, nastavte jeho závažnost v none
konfiguračním souboru.
[*.{cs,vb}]
dotnet_diagnostic.CA5365.severity = none
Další informace naleznete v tématu Jak potlačit upozornění analýzy kódu.
Příklady pseudokódu
using System;
using System.Web.Configuration;
class TestClass
{
public void TestMethod()
{
HttpRuntimeSection httpRuntimeSection = new HttpRuntimeSection();
httpRuntimeSection.EnableHeaderChecking = false;
}
}
Řešení
using System;
using System.Web.Configuration;
class TestClass
{
public void TestMethod()
{
HttpRuntimeSection httpRuntimeSection = new HttpRuntimeSection();
httpRuntimeSection.EnableHeaderChecking = true;
}
}