Teilen über


CA5368: Festlegen von ViewStateUserKey für von der Seite abgeleitete Klassen

Eigenschaft Wert
Regel-ID CA5368
Titel Festlegen von ViewStateUserKey für von der Seite abgeleitete Klassen
Kategorie Security
Fix führt oder führt nicht zur Unterbrechung Nicht unterbrechend
Standardmäßig in .NET 8 aktiviert Nein

Ursache

Die Page.ViewStateUserKey-Eigenschaft ist in der Page.OnInit- oder Page_Init-Methode nicht zugewiesen.

Regelbeschreibung

Achten Sie beim Entwerfen eines ASP.NET Webformulars besonders auf mögliche Angriffe durch websiteübergreifende Anforderungsfälschung (CSRF). Mit einem websiteübergreifenden Anforderungsfälschungsangriff können schädliche Anforderungen von einem authentifizierten Benutzer an Ihr ASP.NET Webformular gesendet werden.

Eine Möglichkeit zum Schutz vor CSRF-Angriffen im ASP.NET Webformular besteht darin, ViewStateUserKey einer Seite auf eine Zeichenfolge festzulegen, die unvorhersehbar und für eine Sitzung einzigartig ist. Für weitere Informationen, siehe Verwendung von ASP.NET integrierten Funktionen, um Web-Angriffe abzuwehren.

Behandeln von Verstößen

Legen Sie die ViewStateUserKey-Eigenschaft auf eine unvorhersehbare und einzigartige Zeichenfolge pro Sitzung fest. Wenn Sie z. b. den ASP.NET-Sitzungszustand verwenden, funktioniert HttpSessionState.SessionID.

Wann sollten Warnungen unterdrückt werden?

Eine Warnung aus dieser Regel kann sicher unterdrückt werden, wenn Folgendes gilt:

  • Die Seite „ASP.NET Webformular“ führt keine sensiblen Vorgänge aus.
  • Websiteübergreifende Anforderungsfälschungsangriffe werden so verringert, dass diese Regel nicht erkannt wird. Wenn die Seite z. b. von einer Masterseite erbt, die CSRF-Schutzmechanismen enthält.

Unterdrücken einer Warnung

Um nur eine einzelne Verletzung zu unterdrücken, fügen Sie der Quelldatei Präprozessoranweisungen hinzu, um die Regel zu deaktivieren und dann wieder zu aktivieren.

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

Um die Regel für eine Datei, einen Ordner oder ein Projekt zu deaktivieren, legen Sie den Schweregrad in der Konfigurationsdatei auf none fest.

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

Weitere Informationen finden Sie unter Vorgehensweise: Unterdrücken von Codeanalyse-Warnungen.

Pseudocodebeispiele

Verletzung

using System;
using System.Web.UI;

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

Lösung

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