Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 44609|Antwort: 1

[Quelle] ValidateAntiForgeryToken und AutoValidateAntiforgeryToken Anti-Fälschungs-Tags werden ausführlich erklärt

[Link kopieren]
Veröffentlicht am 20.02.2021 19:57:29 | | | |
Um CSRF-Angriffe zu verhindern, stellt asp.net mvc die Funktion ValidateAntiForgeryToken gegen Fälschungsangriffe bereit, und in der neuen Version des asp.net-Kernframeworks stellt Microsoft die AutoValidateAntiforgeryToken-Funktion bereit, insbesondere ValidateAntiForgeryToken und AutoValidateAntiforgeryToken Was der Unterschied ist, wird dieser Artikel ausführlich erklären.

mvc ajax mit AntiForgeryToken zu verhindern, um CSRF-Angriffe zu verhindern
https://www.itsvse.com/thread-4207-1-1.html

ASP.NET CSRF-Angriff Ajax-Kapselungsanforderung
https://www.itsvse.com/thread-8077-1-1.html
CSRF-Konzept

CSRF Cross-Site Request Forgery ist, wie XSS-Angriffe, extrem schädlich, man kann es so verstehen: Der Angreifer stiehlt Ihre Identität und sendet eine bösartige Anfrage in Ihrem Namen, die für den Server völlig legitim ist, aber eine Handlung ausführt, die der Angreifer erwartet, wie das Versenden von E-Mails und Nachrichten in Ihrem Namen, das Stehlen Ihres Kontos, das Hinzufügen von Systemadministratoren oder sogar den Kauf von Waren. Virtuelle Währungstransfers usw. Web A ist eine Website mit einer CSRF-Schwachstelle, Web B ist eine bösartige Website, die von einem Angreifer erstellt wurde, und Nutzer C ist ein legitimer Nutzer von Web A.


ASP.NET MVC gegen CSRF-Angriffe

Auf der View-Seite verwenden Sie @Html.AntiForgeryToken(), um ein Tag hinzuzufügen, und wenn der Benutzer auf die Seite zugriff, generiert das Backend automatisch einen versteckten HTML-Code mit dem Tag, wie folgt:


<Eingabename="__RequestVerificationToken" type="versteckt" value="CfDJ8FBn4LzSYglJpE6Q0fWvZ8WDMTgwK49lDU1XGuP5-5j4JlSCML_IDOO3XDL5EOyI_mS2Ux7lLSfI7ASQnIIxo2ScEJvnABf9v51TUZl_iM2S63zuiPK4lcXRPa_KUUDbK-LS4HD16pJusFRppj-dEGc" />
Der Hintergrundcontroller muss eingestellt werden [ValidateAntiForgeryToken]-Funktion zur Verhinderung von Fälschungen von Formulareinreichungen.

ValidateAntiForgeryToken und AutoValidateAntiforgeryToken unterscheiden sich

AutoValidateAntiforgeryTokenAuthorizationFilter erbt das ValidateAntiforgeryTokenAuthorizationFilter, schreibt jedoch nur die ShouldValidate-Methode darin um.

AutoValidateAntiforgeryToken-Eigenschaft, die die Validierung von Anti-Fälschungs-Token für alle unsicheren HTTP-Methoden verursacht.HTTP-Methoden außer GET, HEAD, OPTIONS und TRACE erfordern alle einen Anti-Fälschungstoken。 Dies kann als globaler Filter angewendet werden, um standardmäßig die Anti-Fälschungs-Tokenvalidierung der Anwendung auszulösen.

Der Hyperlink-Login ist sichtbar.

AutoValidateAntiforgeryTokenAttribute validiert den Aufruf von AutoValidateAntiforgeryTokenAuthorizationFilter, der von ValidateAntiforgeryTokenAuthorizationFilter,Die Soll-Validate-Methode wurde umgeschrieben, True zurückzugeben bedeutet, dass sie validiert werden muss, und Returning False wird nicht validiert, wie in der untenstehenden Abbildung dargestellt:

Analysieren Sie den Quellcode:



AutoValidateAntiforgeryTokenAttribute ermöglicht die globale Anwendung der Anti-Fälschungs-Tokenvalidierung auf alle unsicheren Methoden wie POST, PUT, PATCH und DELETE. Du musst also nicht die Eigenschaft [ValidateAntiForgeryToken] zu jeder Aktion hinzufügen, die sie benötigt.

Um es zu verwenden, fügen Sie den folgenden Code zur Startup-Klasse Ihrer ConfigureServices hinzu:


Wenn du die Anti-Fälschungs-Authentifizierung ignorieren musst, kannst du hinzufügen [IgnorierenAntiforgeryTokenSchreiben Sie der Aktion zu.

Manchmal muss man mehrere Anfragen auf einem Controller taggen, während einige Anfragen nicht gefälscht werden müssen, wie verschiedene GET-basierte Operationen. Es gibt mehrere Werkzeuge, die Sie nutzen können, um den Prozess bequemer und komfortabler zu gestalten. Die erste ist die AutoValidateAntiforgeryToken-Eigenschaft. Es verhält sich wie die ValidateAntiForgeryToken-Eigenschaft. Allerdings ignoriert es automatisch die Aktionen, die von Methoden für die Datenabruf ausgerufen werden: GET, HEAD, OPTIONS und TRACE. Dadurch können Sie schnell und einfach Anti-Fälschungsmethoden zu allen Methoden hinzufügen, die Daten ändern können, ohne die Datenabrufe zu beeinträchtigen.

Der folgende Code ist ein Beispiel für die Eigenschaft AutoValidateAntiforgeryToken:


In diesem Beispiel funktionieren beide normalen Index-Operationen (GET) unabhängig von der Quelle, während sowohl die Index-Operation mit der POST-Methode als auch die RemoveUser-Operation als Delete-Methode erfordern, dass der Client ein Anti-Fälschungs-Token verwendet.

Passe die relevanten Informationen an

Viele Menschen fragen sich, ob der Name der generierten versteckten Domain durch ihren eigenen ersetzt werden kann und ob der Name des Cookies in ihren eigenen geändert werden kann.

Die Antwort lautet ja, lassen Sie uns kurz demonstrieren:

In der ConfigureServices-Methode des Startups fügen Sie Folgendes hinzu, um den Standardnamen entsprechend zu ändern.


Hinweis: Der größte Unterschied zwischen asp.net Kern und asp.net ist,Core unterstützt das Weitergeben von Validierungsparametern, indem ein Header angefordert wird, nicht um Formulare zu bilden!

private const String AntiforgeryTokenFieldName = "__RequestVerificationToken";
privater Const-String AntiforgeryTokenHeaderName = "RequestVerificationToken";


Sie können den Quellcode ansehen:Der Hyperlink-Login ist sichtbar.

Testcode:





Ergebnis: Der Versuch, auf die test1-Methode zuzugreifen, ergibt einen 400-Fehler, der Zugriff auf die test2-Methode gibt den von uns passierten STR-Parameter zurück, und du siehst, dass die AutoValidateAntiforgeryToken-Funktion die GET-Anfrage nicht abfängt.

(Ende)




Vorhergehend:Fiddler ersetzt Links, fordert Weiterleitungen an
Nächster:[dreht sich] SQL Server SQL Count
 Vermieter| Veröffentlicht am 08.07.2023 22:07:08 |
ASP.NET MVC fordert XSS Dangerous Content Validation an (ValidateInput)
https://www.itsvse.com/thread-10624-1-1.html
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com