351 Stimmen

ValidateAntiForgeryToken Zweck, Erklärung und Beispiel

Können Sie erklären ValidateAntiForgeryToken Zweck und zeigen Sie mir ein Beispiel über ValidateAntiForgeryToken in MVC 4?

Ich konnte keine Beispiele finden, die dieses Attribut erklären?

388voto

Richard Szalay Punkte 80740

Die Fälschungssicherheit von MVC schreibt einen eindeutigen Wert in ein HTTP-Only-Cookie, und derselbe Wert wird dann in das Formular geschrieben. Wenn die Seite übermittelt wird, wird ein Fehler ausgelöst, wenn der Cookie-Wert nicht mit dem Formularwert übereinstimmt.

Es ist wichtig zu beachten, dass die Funktion verhindert Website-übergreifende Anforderungsfälschungen . Dabei handelt es sich um ein Formular von einer anderen Website, das auf Ihrer Website erscheint und versucht, versteckte Inhalte mit den Anmeldedaten eines authentifizierten Benutzers zu übermitteln. Der Angriff besteht darin, den angemeldeten Benutzer zum Absenden eines Formulars zu verleiten oder einfach ein Formular programmatisch auszulösen, wenn die Seite geladen wird.

Diese Funktion schützt nicht vor anderen Arten von Angriffen, die auf Datenfälschung oder -manipulation basieren.

Um sie zu verwenden, dekorieren Sie die Aktionsmethode oder den Controller mit der ValidateAntiForgeryToken Attribut und platzieren Sie einen Aufruf an @Html.AntiForgeryToken() in den Formularen, die in die Methode gebucht werden.

61voto

Chandra Malla Punkte 2329

Der grundlegende Zweck des Attributs ValidateAntiForgeryToken besteht darin, Cross-Site-Request-Fgery-Angriffe zu verhindern.

Ein Cross-Site Request Forgery ist ein Angriff, bei dem ein schädliches Skriptelement, ein bösartiger Befehl oder Code vom Browser eines vertrauenswürdigen Benutzers gesendet wird. Weitere Informationen zu diesem Thema finden Sie unter http://www.asp.net/mvc/overview/security/xsrfcsrf-prevention-in-aspnet-mvc-and-web-pages .

Es ist einfach zu verwenden, Sie müssen die Methode mit dem Attribut ValidateAntiForgeryToken wie unten dekorieren:

[HttpPost]  
[ValidateAntiForgeryToken]  
public ActionResult CreateProduct(Product product)  
{
  if (ModelState.IsValid)  
  {
    //your logic 
  }
  return View(ModelName);
}

Sie ist vom System.Web.Mvc-Namensraum abgeleitet.

Und fügen Sie in Ihrer Ansicht diesen Code hinzu, um das Token hinzuzufügen, damit es zur Validierung des Formulars bei der Übermittlung verwendet wird.

@Html.AntiForgeryToken()

19voto

Siarhei Kavaleuski Punkte 1283

In ASP.Net Core wird das Anti-Fälschungs-Token automatisch zu den Formularen hinzugefügt, so dass Sie es nicht hinzufügen müssen. @Html.AntiForgeryToken() wenn Sie das Element razor form verwenden oder wenn Sie IHtmlHelper.BeginForm verwenden und die Methode des Formulars nicht GET ist.

Es erzeugt ein Eingabeelement für Ihr Formular, das dem folgenden ähnelt:

<input name="__RequestVerificationToken" type="hidden" 
       value="CfDJ8HSQ_cdnkvBPo-jales205VCq9ISkg9BilG0VXAiNm3Fl5Lyu_JGpQDA4_CLNvty28w43AL8zjeR86fNALdsR3queTfAogif9ut-Zd-fwo8SAYuT0wmZ5eZUYClvpLfYm4LLIVy6VllbD54UxJ8W6FA">

Und wenn der Benutzer das Formular abschickt, wird dieses Token serverseitig überprüft, wenn die Validierung aktiviert ist.

[ValidateAntiForgeryToken] Attribut kann für Aktionen verwendet werden. Anfragen an Aktionen, auf die dieser Filter angewendet wurde, werden blockiert, es sei denn, die Anfrage enthält ein gültiges Fälschungsschutz-Token.

[AutoValidateAntiforgeryToken] Attribut kann gegenüber Controllern verwendet werden. Dieses Attribut funktioniert identisch mit dem Attribut ValidateAntiForgeryToken, außer dass es keine Token für Anfragen verlangt, die mit den folgenden HTTP-Methoden gestellt werden: GET HEAD OPTIONS TRACE

Zusätzliche Informationen: learn.microsoft.com/aspnet/core/security/anti-request-forgery

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X