CA3147: Igekezelők megjelölése az ValidateAntiForgeryToken használatával
Tulajdonság | Érték |
---|---|
Szabályazonosító | CA3147 |
Cím | Igekezelők megjelölése az ValidateAntiForgeryToken használatával |
Kategória | Biztonság |
A javítás kompatibilitástörő vagy nem törik | Nem törés |
Alapértelmezés szerint engedélyezve a .NET 8-ban | Nem |
Ok
Az ASP.NET MVC vezérlőműveleti metódus nincs megadva ValidateAntiForgeryTokenAttribute vagy a HTTP-parancsot megjelölő attribútummal( például HttpGetAttribute vagy AcceptVerbsAttribute).
Szabály leírása
ASP.NET MVC-vezérlő tervezésekor ügyeljen a helyek közötti hamisítási támadásokra. A helyek közötti hamisítási támadások rosszindulatú kéréseket küldhetnek egy hitelesített felhasználótól a ASP.NET MVC-vezérlőnek. További információ: XSRF/CSRF-megelőzés ASP.NET MVC-ben és weblapokon.
Ez a szabály ellenőrzi, hogy ASP.NET MVC-vezérlő műveleti módszereit:
Kérje meg a ValidateAntiforgeryTokenAttribute parancsot, és adja meg az engedélyezett HTTP-parancsokat, a HTTP GET-t nem beleértve.
Adja meg a HTTP GET-t engedélyezett parancsként.
Szabálysértések kijavítása
Ha ASP.NET MVC-vezérlőműveleteket, amelyek HTTP GET-kéréseket kezelnek, és nincsenek potenciálisan káros mellékhatásai, adjon hozzá egy HttpGetAttribute-et a metódushoz.
Ha olyan ASP.NET MVC-vezérlőművelete van, amely HTTP GET-kérelmeket kezel, és potenciálisan káros mellékhatásokkal rendelkezik, például bizalmas adatok módosításával, akkor az alkalmazás sebezhető a helyek közötti kérelemhamisítási támadásokkal szemben. Újra kell terveznie az alkalmazást, hogy csak a HTTP POST, PUT vagy DELETE kérelmek hajtsanak végre bizalmas műveleteket.
A HTTP POST, PUT vagy DELETE kéréseket kezelő ASP.NET MVC-vezérlőműveletek esetén adja hozzá az ValidateAntiForgeryTokenAttribute parancsot, és adja hozzá az engedélyezett HTTP-parancsokat (AcceptVerbsAttribute, HttpPostAttribute, HttpPutAttribute vagy HttpDeleteAttribute) megadva. Emellett meg kell hívnia a HtmlHelper.AntiForgeryToken() metódust az MVC nézetből vagy a Razor weblapról. Példa: A szerkesztési módszerek és a szerkesztési nézet vizsgálata.
Mikor kell letiltani a figyelmeztetéseket?
A szabály figyelmeztetését nyugodtan letilthatja, ha:
- A ASP.NET MVC vezérlőműveletnek nincsenek káros mellékhatásai.
- Az alkalmazás más módon ellenőrzi az antiforgery tokent.
Figyelmeztetés mellőzése
Ha csak egyetlen szabálysértést szeretne letiltani, adjon hozzá előfeldolgozási irányelveket a forrásfájlhoz a szabály letiltásához és újbóli engedélyezéséhez.
#pragma warning disable CA3147
// The code that's violating the rule is on this line.
#pragma warning restore CA3147
Ha le szeretné tiltani egy fájl, mappa vagy projekt szabályát, állítsa annak súlyosságát none
a konfigurációs fájlban.
[*.{cs,vb}]
dotnet_diagnostic.CA3147.severity = none
További információ: Kódelemzési figyelmeztetések letiltása.
ValidateAntiForgeryToken attribútum példa
Megsértése:
namespace TestNamespace
{
using System.Web.Mvc;
public class TestController : Controller
{
public ActionResult TransferMoney(string toAccount, string amount)
{
// You don't want an attacker to specify to who and how much money to transfer.
return null;
}
}
}
Megoldás:
using System;
using System.Xml;
namespace TestNamespace
{
using System.Web.Mvc;
public class TestController : Controller
{
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult TransferMoney(string toAccount, string amount)
{
return null;
}
}
}
Példa HttpGet-attribútumra
Megsértése:
namespace TestNamespace
{
using System.Web.Mvc;
public class TestController : Controller
{
public ActionResult Help(int topicId)
{
// This Help method is an example of a read-only operation with no harmful side effects.
return null;
}
}
}
Megoldás:
namespace TestNamespace
{
using System.Web.Mvc;
public class TestController : Controller
{
[HttpGet]
public ActionResult Help(int topicId)
{
return null;
}
}
}
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: