CA5395: Chybí atribut HttpVerb pro metody akcí
Vlastnost | Hodnota |
---|---|
ID pravidla | CA5395 |
Název | Chybějící atribut HttpVerb pro metody akce |
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
Nezadávejte typ požadavku HTTP explicitně pro metody akcí.
Popis pravidla
Všechny metody akcí, které vytvářejí, upravují, odstraňují nebo jinak upravují data, musí být chráněny pomocí atributu antiforgery před útoky proti padělání požadavků mezi weby. Provedení operace GET by mělo být bezpečná operace, která nemá žádné vedlejší účinky a neupravuje trvalá data.
Jak opravit porušení
Označte metody akce atributem HttpVerb
.
Kdy potlačit upozornění
Upozornění z tohoto pravidla je bezpečné potlačit, pokud:
- Ujistěte se, že v metodě akce neprobíhá žádná operace úprav. Nebo to není vůbec metoda akce.
- K zmírnění ohrožení zabezpečení CSRF se přijímají jiná řešení než použití atributů tokenu antiforgery. Další informace najdete v tématu Prevence útoků založených na padělání žádosti posílané mezi weby (XSRF/CSRF) v ASP.NET Core.
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 CA5395
// The code that's violating the rule is on this line.
#pragma warning restore CA5395
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.CA5395.severity = none
Další informace naleznete v tématu Jak potlačit upozornění analýzy kódu.
Příklady pseudokódu
Porušení
using Microsoft.AspNetCore.Mvc;
[ValidateAntiForgeryToken]
class BlahController : Controller
{
}
class ExampleController : Controller
{
public IActionResult ExampleAction()
{
return null;
}
}
Řešení
using Microsoft.AspNetCore.Mvc;
[ValidateAntiForgeryToken]
class BlahController : Controller
{
}
class ExampleController : Controller
{
[HttpGet]
public IActionResult ExampleAction()
{
return null;
}
}