Qu’est-ce que le CSRF ?
CSRF (falsification de requête intersite), également connue sous le nom d’attaque à un clic/session riding, abréviation chinoise : CSRF/XSRF. La CSRF (Cross Site Request Forgery) est une méthode d’attaque réseau qui figurait parmi les 20 principaux risques de sécurité sur Internet en 2007. D’autres risques de sécurité, tels que l’injection de scripts SQL et les attaques par scripts de domaine inter-sites, sont devenus bien connus ces dernières années, et de nombreux sites web se sont défendus contre eux. Cependant, CSRF reste un concept étranger pour la plupart des gens. Même le Gmail le plus célèbre avait une vulnérabilité CSRF fin 2007, qui a été piratée et a causé d’énormes pertes aux utilisateurs de Gmail.
Que peut faire la CSRF ?
Vous pouvez comprendre les attaques CSRF comme celles-ci : un attaquant a volé votre identité et envoyé des requêtes malveillantes en votre nom. Le CSRF peut faire des choses comme envoyer des e-mails, envoyer des messages, voler votre compte, ou même acheter des biens et transférer de la monnaie virtuelle en votre nom...... Les problèmes causés incluent : la fuite de vie privée personnelle et la sécurité des biens.
ASP.NET marque anti-contrefaçon anti-contrefaçon MVC AntiForgeryToken
Dans ASP.NET MVC, les jetons formulaire et les jetons de cookies sont générés automatiquement par défaut chaque fois que @Html.AntiForgeryToken() est utilisé dans la page de vue. Cependant, si nous voulons obtenir une récupération manuelle en arrière-plan, nous devons utiliser la classe System.Web.Helpers.AntiForgery, et les amis intéressés par la consultation du code source constateront qu’en fait, la méthode d’appel interne de @Html.AntiForgeryToken() est la même que celle de la classe AntiForgery.
Il est principalement utilisé pour obtenir le token de formulaire et de cookie correspondant via deux méthodes statiques : AntiForgery.GetHtml() ou AntiForgery.GetTokens (chaîne oldCookieToken, chaîne out newCookieToken, chaîne out formToken). Cependant, il convient de noter qu’une fois la méthode GetHtml appelée, le token cookie correspondant sera automatiquement généré, puis un morceau de code HTML avec le champ caché de la valeur du jeton de formulaire sera directement retourné, et la valeur retournée sera sous cette forme :
<nom d’entrée="__RequestVerificationToken » type="hidden » value="8_nUk_3z0svQr9qcvRBi9SWMZ2-SYmuy9kRe9OgRobGULkb2Z4JZxRZFhR0ndeoy9hmDLDru7MFk-W4xrnL5z5T6VbkfXK7fyRk-egQBGm41"> Le nom du champ caché est généralement fixé à « __RequestVerificationToken », et la valeur est un jeton de sécurité chiffré. Ce champ caché est généralement placé dans le formulaire à soumettre, et la soumission finale est vérifiée par rapport au jeton cookie.
Si vous utilisez la méthode GetTokens, vous pouvez obtenir le formulaire chiffré et le token cookie après avoir passé les paramètres correspondants, mais ici vous devez stocker vous-même les valeurs correspondantes.
Ensuite, nous allons introduire la méthode de mise à jour manuelle d’AntiForgeryToken, principalement via AJAX.
Code de forfait :
Code de test :
Nous avons constaté que lors de l’envoi d’une requête ajax, __RequestVerificationToken paramètres sont automatiquement inclus, comme montré dans la figure ci-dessous :
|