Microsoft nous fournit des fonctionnalités intégrées que nous utilisons dans notre application à des fins de sécurité, afin que personne ne puisse pirater notre site ou envahir certaines informations critiques.
Utilisation de ValidateAntiForgeryToken
Essayons avec un exemple simple de comprendre ce concept. Je ne veux pas compliquer les choses, c'est pourquoi je vais utiliser un modèle d'application MVC, déjà disponible dans Visual Studio. Nous ferons cela étape par étape. Commençons.
Étape 1 - Créez deux applications MVC avec le modèle Internet par défaut et donnez ces noms respectivement CrossSite_RequestForgery et Attack_Application.
Maintenant, ouvrez la configuration Web de l'application CrossSite_RequestForgery et modifiez la chaîne de connexion avec celle indiquée ci-dessous, puis enregistrez.
"
<connectionStrings> <add name="DefaultConnection" connectionString="Data Source=local\SQLEXPRESS;Initial Catalog=CSRF;
Integrated Security=true;" providerName="System.Data.SqlClient" />
</connectionStrings>
Maintenant, cliquez sur Outils >> NuGet Package Manager, puis sur Package Manager Console
Maintenant, exécutez les trois commandes mentionnées ci-dessous dans la console du gestionnaire de packages pour créer la base de données.
Enable-Migrations add-migration first update-database
Notes importantes - J'ai créé une base de données avec une approche en premier code parce que je veux faire cet exemple dans la façon dont les développeurs travaillent. Vous pouvez également créer une base de données manuellement. C'est ton choix.
- Maintenant, ouvrez le contrôleur de compte. Ici, vous verrez une méthode d'enregistrement dont le type est post. Au-dessus de cette méthode, il devrait y avoir un attribut disponible en tant que [ValidateAntiForgeryToken]. Commentez cet attribut. Maintenant, faites un clic droit sur s'inscrire et cliquez sur Aller à la vue. Là encore, vous trouverez un assistant html comme @ Html.AntiForgeryToken (). Commentez celui-ci également. Exécutez l'application et cliquez sur le bouton d'enregistrement. L'URL sera ouverte comme:
http: // localhost: 52269 / Account / Register
Notes - Je sais maintenant que la question qui se pose dans l'esprit de tous les lecteurs est de savoir pourquoi ces deux assistants doivent être commentés, car tout le monde sait qu'ils sont utilisés pour valider la demande. Ensuite, je veux juste vous faire savoir que c'est juste parce que je veux montrer la différence après et avant d'appliquer ces aides.
Maintenant, ouvrez la deuxième application qui est Attack_Application. Ensuite, ouvrez la méthode Register de Account Controller. Modifiez simplement la méthode POST avec la méthode simple, illustrée ci-dessous.
Formulaire d'inscription
- @ Html.LabelFor (m => m.UserName) @ Html.TextBoxFor (m => m.UserName)
- @ Html.LabelFor (m => m.Password) @ Html.PasswordFor (m => m.Password)
- @ Html.LabelFor (m => m.ConfirmPassword) @ Html.PasswordFor (m => m.ConfirmPassword)
Supposons maintenant que vous êtes un pirate informatique et que vous connaissez l'URL d'où vous pouvez enregistrer l'utilisateur dans l'application CrossSite_RequestForgery. Maintenant, vous avez créé un site de contrefaçon en tant que Attacker_Application et venez de mettre la même URL dans la méthode post.
8.Lancez cette application maintenant et remplissez les champs d'inscription et cliquez sur s'inscrire. Vous verrez que vous êtes inscrit dans l'application CrossSite_RequestForgery. Si vous vérifiez la base de données de l'application CrossSite_RequestForgery, vous verrez et l'entrée que vous avez entrée.
- Important - Maintenant, ouvrez l'application CrossSite_RequestForgery et commentez le jeton dans le contrôleur de compte et enregistrez la vue. Essayez de vous enregistrer à nouveau avec le même processus. Ensuite, une erreur se produira comme ci-dessous.
Erreur serveur dans l'application '/' ________________________________________ Le cookie anti-contrefaçon requis "__RequestVerificationToken" n'est pas présent.
C'est ce que dit le concept. Ce que nous ajoutons dans View ie @ Html.AntiForgeryToken () génère __RequestVerificationToken au moment du chargement et [ValidateAntiForgeryToken] disponible sur la méthode Controller. Faites correspondre ce jeton à l'heure de la publication. Si le jeton est le même, cela signifie que c'est une demande valide.