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