CA5368: ViewStateUserKey beállítása lapról származtatott osztályokhoz
Tulajdonság | Érték |
---|---|
Szabályazonosító | CA5368 |
Cím | ViewStateUserKey beállítása lapról származtatott osztályokhoz |
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
A Page.ViewStateUserKey tulajdonság nincs hozzárendelve Page.OnInit vagy a Page_Init
metódus.
Szabály leírása
ASP.NET webűrlap tervezésekor ügyeljen a helyek közötti hamisítási (CSRF-) támadásokra. A CSRF-támadások rosszindulatú kéréseket küldhetnek egy hitelesített felhasználótól a ASP.NET webes űrlapra.
A CSRF-támadások elleni védelem egyik módja ASP.NET webűrlapon az, ha egy lap sztringjét ViewStateUserKey egy munkamenetben kiszámíthatatlan és egyedi sztringre állítja. További információ: ASP.NET beépített funkciók használata a webes támadások elhárításához.
Szabálysértések kijavítása
Állítsa be a ViewStateUserKey tulajdonságot munkamenetenként egy kiszámíthatatlan és egyedi sztringre. Ha például ASP.NET munkamenet-állapotot használ, HttpSessionState.SessionID működni fog.
Mikor kell letiltani a figyelmeztetéseket?
A szabály figyelmeztetését nyugodtan letilthatja, ha:
- A ASP.NET weblap nem végez bizalmas műveleteket.
- A helyek közötti hamisítási támadásokat úgy csökkenti a rendszer, hogy ez a szabály nem észleli. Ha például a lap egy CSRF-védelmet tartalmazó mesterlapról öröklődik.
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 CA5368
// The code that's violating the rule is on this line.
#pragma warning restore CA5368
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.CA5368.severity = none
További információ: Kódelemzési figyelmeztetések letiltása.
Példák pszeudokódokra
Megsértése
using System;
using System.Web.UI;
class ExampleClass : Page
{
protected override void OnInit (EventArgs e)
{
}
}
Megoldás
using System;
using System.Web.UI;
class ExampleClass : Page
{
protected override void OnInit (EventArgs e)
{
// Assuming that your page makes use of ASP.NET session state and the SessionID is stable.
ViewStateUserKey = Session.SessionID;
}
}
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: