Megosztás a következőn keresztül:


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;
    }
}