Share via


CA5368: ViewStateUserKey instellen voor klassen die zijn afgeleid van pagina

Eigenschappen Weergegeven als
Regel-id CA5368
Titel ViewStateUserKey instellen voor klassen die zijn afgeleid van pagina
Categorie Beveiliging
Oplossing is brekend of niet-brekend Niet-brekend
Standaard ingeschakeld in .NET 9 Nee

Oorzaak

De Page.ViewStateUserKey eigenschap is niet toegewezen in Page.OnInit of de Page_Init methode.

Beschrijving van regel

Wanneer u een ASP.NET webformulier ontwerpt, moet u rekening houden met csrF-aanvallen (cross-site request forgery). Een CSRF-aanval kan schadelijke aanvragen verzenden van een geverifieerde gebruiker naar uw ASP.NET webformulier.

Een manier om te beschermen tegen CSRF-aanvallen in ASP.NET webformulier is door een pagina ViewStateUserKey in te stellen op een tekenreeks die onvoorspelbaar en uniek is voor een sessie. Zie Profiteren van ASP.NET ingebouwde functies voor Fend Off Web Attacks voor meer informatie.

Schendingen oplossen

Stel de ViewStateUserKey eigenschap in op een onvoorspelbare en unieke tekenreeks per sessie. Als u bijvoorbeeld ASP.NET sessiestatus gebruikt, HttpSessionState.SessionID werkt dit.

Wanneer waarschuwingen onderdrukken

Het is veilig om een waarschuwing van deze regel te onderdrukken als:

  • De pagina ASP.NET webformulier voert geen gevoelige bewerkingen uit.
  • Aanvallen op aanvraagvervalsing op meerdere sites worden beperkt op een manier die niet door deze regel wordt gedetecteerd. Als de pagina bijvoorbeeld wordt overgenomen van een basispagina die CSRF-beveiliging bevat.

Een waarschuwing onderdrukken

Als u slechts één schending wilt onderdrukken, voegt u preprocessorrichtlijnen toe aan uw bronbestand om de regel uit te schakelen en vervolgens opnieuw in te schakelen.

#pragma warning disable CA5368
// The code that's violating the rule is on this line.
#pragma warning restore CA5368

Als u de regel voor een bestand, map of project wilt uitschakelen, stelt u de ernst none ervan in op het configuratiebestand.

[*.{cs,vb}]
dotnet_diagnostic.CA5368.severity = none

Zie Codeanalysewaarschuwingen onderdrukken voor meer informatie.

Voorbeelden van pseudocode

Schending

using System;
using System.Web.UI;

class ExampleClass : Page
{
    protected override void OnInit (EventArgs e)
    {
    }
}

Oplossing

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