Was ist CSRF?
CSRF (Cross-site Request Forgery), auch bekannt als One-Click Attack/Session Riding, chinesische Abkürzung: CSRF/XSRF. CSRF (Cross Site Request Forgery) ist eine Netzwerkangriffsmethode, die 2007 als eines der 20 größten Sicherheitsrisiken im Internet gelistet wurde. Weitere Sicherheitsrisiken, wie SQL-Skript-Injection und Cross-Site-Domain-Script-Angriffe, sind in den letzten Jahren bekannt geworden, und viele Websites haben sich dagegen verteidigt. CSRF ist jedoch für die meisten Menschen immer noch ein fremdes Konzept. Sogar das bekannteste Gmail hatte Ende 2007 eine CSRF-Schwachstelle, die gehackt wurde und den Gmail-Nutzern enorme Verluste zufügte.
Was kann CSRF tun?
Sie können CSRF-Angriffe so verstehen: Ein Angreifer hat Ihre Identität gestohlen und bösartige Anfragen in Ihrem Namen gesendet. CSRF kann Dinge wie E-Mails senden, Nachrichten senden, Ihr Konto stehlen oder sogar Waren kaufen und virtuelle Währung in Ihrem Namen überweisen...... Zu den verursachten Problemen gehören: persönliche Privatsphäre und Sicherheit von Eigentum.
ASP.NET MVC AntiForgeryToken-Anti-Fälschungsmarke
In ASP.NET MVC werden Formular- und Cookie-Tokens standardmäßig automatisch generiert, wann immer @Html.AntiForgeryToken() auf der Ansichtsseite verwendet wird. Wenn wir jedoch manuelle Abrufe im Hintergrund erreichen wollen, müssen wir die System.Web.Helpers.AntiForgery-Klasse verwenden, und Freunde, die den Quellcode ansehen möchten, werden feststellen, dass die interne Methode des internen Aufrufs von @Html.AntiForgeryToken() tatsächlich dieselbe ist wie die der AntiForgery-Klasse.
Es wird hauptsächlich verwendet, um das entsprechende Formular und das Cookie-Token über zwei statische Methoden zu erhalten: AntiForgery.GetHtml() oder AntiForgery.GetTokens(string oldCookieToken, out string newCookieToken, out string formToken). Es sollte jedoch beachtet werden, dass, sobald die GetHtml-Methode aufgerufen wird, das entsprechende Cookie-Token automatisch generiert wird und dann ein Stück HTML-Code mit dem versteckten Feld des Formular-Token-Werts direkt zurückgegeben wird, der zurückgegebene Wert in folgender Form ist:
<eingabename="__RequestVerificationToken" type="hidden" value="8_nUk_3z0svQr9qcvRBi9SWMZ2-SYmuy9kRe9OgRobGULkb2Z4JZxRZFhR0ndeoy9hmDLDru7MFk-W4xrnL5z5T6VbkfXK7fyRk-egQBGm41"> Der Name des versteckten Feldes ist in der Regel auf "__RequestVerificationToken" fixiert, und der Wert ist ein verschlüsselter Sicherheitstoken. Dieses versteckte Feld wird in der Regel im einzureichenden Formular eingefügt, und die endgültige Einreichung wird anhand des Cookie-Tokens überprüft.
Wenn Sie die GetTokens-Methode verwenden, können Sie das verschlüsselte Formular und das Cookie-Token nach der Weitergabe der entsprechenden Parameter erhalten, aber hier müssen Sie die entsprechenden Werte selbst speichern.
Als Nächstes stellen wir die Methode vor, AntiForgeryToken manuell zu aktualisieren, hauptsächlich über AJAX.
Paketcode:
Testcode:
Wir stellten fest, dass beim Senden einer Ajax-Anfrage __RequestVerificationToken Parameter automatisch enthalten sind, wie in der untenstehenden Abbildung gezeigt:
|