CA5395: Fehlendes HttpVerb-Attribut für Aktionsmethoden.
Eigenschaft | Wert |
---|---|
Regel-ID | CA5395 |
Titel | Fehlendes HttpVerb-Attribut für Aktionsmethoden. |
Kategorie | Security |
Fix führt oder führt nicht zur Unterbrechung | Nicht unterbrechend |
Standardmäßig in .NET 9 aktiviert | No |
Ursache
Die Art der HTTP-Anforderung wird nicht explizit für Aktionsmethoden angegeben.
Regelbeschreibung
Alle Aktionsmethoden, die Daten erstellen, bearbeiten, löschen oder anderweitig ändern, müssen mit dem antiforgery-Attribut vor Angriffen durch siteübergreifende Anforderungsfälschung geschützt werden. Die Durchführung eines GET-Vorgangs sollte eine sichere Operation sein, die keine Nebenwirkungen hat und Ihre permanenten Daten nicht ändert.
Behandeln von Verstößen
Markieren Sie die Aktionsmethoden mit dem HttpVerb
-Attribut.
Wann sollten Warnungen unterdrückt werden?
Warnungen aus dieser Regel können sicher unterdrückt werden, wenn Folgendes gilt:
- Sie sind sicher, dass in der Aktionsmethode kein ändernder Vorgang stattfindet. Oder es handelt sich nicht um eine Aktionsmethode.
- Um CSRF-Sicherheitsrisiken zu entschärfen, werden Lösungen außer Antifälschungstokenattribute verwendet. Weitere Informationen finden Sie unter Prevent Cross-Site Request Forgery (XSRF/CSRF) Attacks in ASP.NET Core (Verhindern von websiteübergreifenden Anforderungsfälschungen (XSRF/CSRF) in ASP.NET Core).
Unterdrücken einer Warnung
Um nur eine einzelne Verletzung zu unterdrücken, fügen Sie der Quelldatei Präprozessoranweisungen hinzu, um die Regel zu deaktivieren und dann wieder zu aktivieren.
#pragma warning disable CA5395
// The code that's violating the rule is on this line.
#pragma warning restore CA5395
Um die Regel für eine Datei, einen Ordner oder ein Projekt zu deaktivieren, legen Sie den Schweregrad in der Konfigurationsdatei auf none
fest.
[*.{cs,vb}]
dotnet_diagnostic.CA5395.severity = none
Weitere Informationen finden Sie unter Vorgehensweise: Unterdrücken von Codeanalyse-Warnungen.
Pseudocodebeispiele
Verletzung
using Microsoft.AspNetCore.Mvc;
[ValidateAntiForgeryToken]
class BlahController : Controller
{
}
class ExampleController : Controller
{
public IActionResult ExampleAction()
{
return null;
}
}
Lösung
using Microsoft.AspNetCore.Mvc;
[ValidateAntiForgeryToken]
class BlahController : Controller
{
}
class ExampleController : Controller
{
[HttpGet]
public IActionResult ExampleAction()
{
return null;
}
}