it-swarm.com.de

ValidateAntiForgeryToken Zweck, Erklärung und Beispiel

Könnten Sie ValidateAntiForgeryToken erklären und mir ein Beispiel zu ValidateAntiForgeryToken in MVC 4 zeigen?

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

283
Tabriz Atayi

Die Fälschungssicherheitsunterstützung von MVC schreibt einen eindeutigen Wert in ein Nur-HTTP-Cookie. Anschließend wird derselbe Wert in das Formular geschrieben. Beim Senden der Seite wird ein Fehler ausgegeben, wenn der Cookie-Wert nicht mit dem Formularwert übereinstimmt.

Es ist wichtig zu beachten, dass die Funktion Cross Site Request Forgeries verhindert. Dies ist ein Formular von einer anderen Website, das auf Ihrer Website veröffentlicht wird, um versteckten Inhalt mithilfe der Anmeldeinformationen eines authentifizierten Benutzers zu übermitteln. Der Angriff besteht darin, den angemeldeten Benutzer zum Senden eines Formulars zu verleiten oder einfach ein Formular programmgesteuert auszulösen, wenn die Seite geladen wird.

Die Funktion verhindert keine andere Art von Datenfälschung oder manipulationsbasierten Angriffen.

Verzieren Sie dazu die Aktionsmethode oder den Controller mit dem Attribut ValidateAntiForgeryToken , und rufen Sie @Html.AntiForgeryToken() in den Formularen auf, in denen der Versand erfolgt die Methode.

333
Richard Szalay

Der Hauptzweck des Attributs ValidateAntiForgeryToken besteht darin, Angriffe auf siteübergreifende Anforderungsfälschungen zu verhindern.

Eine standortübergreifende Anforderungsfälschung ist ein Angriff, bei dem ein schädliches Skriptelement, ein böswilliger Befehl oder Code vom Browser eines vertrauenswürdigen Benutzers gesendet wird. Weitere Informationen hierzu finden Sie unter http://www.asp.net/mvc/overview/security/xsrfcsrf-prevention-in-aspnet-mvc-and-web-pages .

Die Verwendung ist einfach. Sie müssen die Methode wie folgt mit dem ValidateAntiForgeryToken-Attribut dekorieren:

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

Es wird von System.Web.Mvc-Namespace abgeleitet.

Fügen Sie Ihrer Ansicht nach diesen Code hinzu, um das Token hinzuzufügen, damit das Formular beim Absenden validiert wird.

@Html.AntiForgeryToken()
45
Chandra Malla

Microsoft stellt uns integrierte Funktionen zur Verfügung, die wir in unserer Anwendung zu Sicherheitszwecken verwenden, damit niemand unsere Website hacken oder in wichtige Informationen eindringen kann.

Verwendung von ValidateAntiForgeryToken

Lassen Sie uns anhand eines einfachen Beispiels versuchen, dieses Konzept zu verstehen. Ich möchte es nicht zu kompliziert machen. Deshalb verwende ich eine Vorlage einer MVC-Anwendung, die bereits in Visual Studio verfügbar ist. Wir werden dies Schritt für Schritt tun. Lasst uns beginnen.

  1. Schritt 1 - Erstellen Sie zwei MVC-Anwendungen mit der Standard-Internetvorlage und geben Sie diese Namen als CrossSite_RequestForgery bzw. Attack_Application an.

  2. Öffnen Sie nun die Web-Konfiguration der Anwendung CrossSite_RequestForgery, ändern Sie die Verbindungszeichenfolge mit der unten angegebenen und speichern Sie sie.

`

<connectionStrings> <add name="DefaultConnection" connectionString="Data Source=local\SQLEXPRESS;Initial Catalog=CSRF; Integrated Security=true;" providerName="System.Data.SqlClient" /> 
 </connectionStrings>

`

  1. Klicken Sie nun auf Tools >> NuGet Package Manager und anschließend auf Package Manager Console

  2. Führen Sie nun die folgenden drei Befehle in der Package Manager-Konsole aus, um die Datenbank zu erstellen.

Enable-Migrations Add-Migration erste Update-Datenbank

Wichtige Hinweise - Ich habe eine Datenbank mit dem Code-First-Ansatz erstellt, weil ich dieses Beispiel so gestalten möchte, wie Entwickler arbeiten. Sie können die Datenbank auch manuell erstellen. Es ist deine Wahl.

  1. Öffnen Sie nun den Account Controller. Hier sehen Sie eine Registermethode, deren Typ post ist. Über dieser Methode sollte ein Attribut als [ValidateAntiForgeryToken] verfügbar sein. Kommentieren Sie dieses Attribut. Klicken Sie nun mit der rechten Maustaste auf "Registrieren" und wählen Sie "Anzeigen". Dort finden Sie wieder einen HTML-Helfer als @ Html.AntiForgeryToken (). Kommentiere auch diesen. Starten Sie die Anwendung und klicken Sie auf die Schaltfläche Registrieren. Die URL wird geöffnet als:

http: // localhost: 52269/Account/Register

Anmerkungen - Ich weiß jetzt, dass alle Leser die Frage haben, warum diese beiden Helfer kommentiert werden müssen, da jeder weiß, dass sie zur Validierung verwendet werden Anfrage. Dann möchte ich Sie alle wissen lassen, dass dies nur deshalb geschieht, weil ich den Unterschied nach und vor dem Anwenden dieser Helfer zeigen möchte.

  1. Öffnen Sie nun die zweite Anwendung, Attack_Application. Öffnen Sie dann die Registrierungsmethode von Account Controller. Ändern Sie einfach die Methode POST mit der unten gezeigten einfachen Methode.

    Anmeldeformular
    1. @ Html.LabelFor (m => m.UserName) @ Html.TextBoxFor (m => m.UserName)
    2. @ Html.LabelFor (m => m.Password) @ Html.PasswordFor (m => m.Password)
    3. @ Html.LabelFor (m => m.ConfirmPassword) @ Html.PasswordFor (m => m.ConfirmPassword)

7. Angenommen, Sie sind ein Hacker und kennen die URL, unter der Sie Benutzer in der Anwendung CrossSite_RequestForgery registrieren können. Jetzt haben Sie eine Forgery-Site als Attacker_Application erstellt und dieselbe URL in die post-Methode eingefügt.

8. Führen Sie diese Anwendung jetzt aus, füllen Sie die Registrierungsfelder aus und klicken Sie auf "Registrieren". Sie werden sehen, dass Sie in der Anwendung CrossSite_RequestForgery registriert sind. Wenn Sie die Datenbank der Anwendung CrossSite_RequestForgery überprüfen, wird der von Ihnen eingegebene Eintrag angezeigt.

  1. Wichtig - Öffnen Sie jetzt die Anwendung CrossSite_RequestForgery, kommentieren Sie das Token im Account Controller aus und registrieren Sie die Ansicht. Versuchen Sie erneut, sich mit demselben Vorgang zu registrieren. In diesem Fall tritt der folgende Fehler auf.

Serverfehler in '/' Anwendung.


Das erforderliche Anti-Fälschungs-Cookie "__RequestVerificationToken" ist nicht vorhanden.

Das sagt das Konzept. Was wir in der Ansicht hinzufügen, d. H. @ Html.AntiForgeryToken (), generiert __RequestVerificationToken bei Ladezeit und [ValidateAntiForgeryToken] für die Controller-Methode. Passen Sie dieses Token an die Postzeit an. Wenn das Token identisch ist, bedeutet dies, dass es sich um eine gültige Anforderung handelt.

1
Vinayak Savale