Maison  >  Article  >  cadre php  >  Laravel-Protection CSRF

Laravel-Protection CSRF

王林
王林original
2024-08-27 10:50:53616parcourir

CSRF fait référence aux attaques Cross Site Forgery sur les applications Web. Les attaques CSRF sont les activités non autorisées effectuées par les utilisateurs authentifiés du système. En tant que telles, de nombreuses applications Web sont sujettes à ces attaques.

Laravel offre une protection CSRF de la manière suivante −

Laravel inclut un plug-in CSRF intégré, qui génère des jetons pour chaque session utilisateur active. Ces jetons vérifient que les opérations ou requêtes sont envoyées par l'utilisateur authentifié concerné.

Implémentation

L'implémentation de la protection CSRF dans Laravel est abordée en détail dans cette section. Les points suivants sont remarquables avant de poursuivre sur la protection CSRF -

  • CSRF est implémenté dans les formulaires HTML déclarés dans les applications Web. Vous devez inclure un jeton CSRF validé caché dans le formulaire, afin que le middleware de protection CSRF de Laravel puisse valider la demande. La syntaxe est indiquée ci-dessous −

<form method = "POST" action="/profile">
   {{ csrf_field() }}
   ...
</form>
  • Vous pouvez facilement créer des applications pilotées par JavaScript à l'aide de la bibliothèque HTTP JavaScript, car celle-ci inclut un jeton CSRF pour chaque requête sortante.

  • Le fichier, à savoir resources/assets/js/bootstrap.js, enregistre tous les jetons pour les applications Laravel et comprend la balise meta qui stocke csrf-token avec la bibliothèque HTTP Axios.

Formulaire sans jeton CSRF

Considérez les lignes de code suivantes. Ils affichent un formulaire qui prend deux paramètres en entrée : email et message.

<form><form><br/>   <label> Email </label><br/>      <input type = "text" name = "email"/><br/>      <br/><br/>   <label> Message </label> <input type="text" name = "message"/><br/>   <input type = ”submit” name = ”submitButton” value = ”submit”><br/></form></form>

Le résultat du code ci-dessus est le formulaire ci-dessous que l'utilisateur final peut visualiser −

Contact Form

Le formulaire ci-dessus acceptera toute information saisie par un utilisateur autorisé. Cela peut rendre l'application Web sujette à diverses attaques.

Veuillez noter que le bouton de soumission inclut des fonctionnalités dans la section du contrôleur. La fonction postContact est utilisée dans les contrôleurs pour les vues associées. Il est affiché ci-dessous −

public function postContact(Request $request) {
   return $request-> all();
}

Observez que le formulaire n'inclut aucun jeton CSRF, donc les informations sensibles partagées en tant que paramètres d'entrée sont sujettes à diverses attaques.

Formulaire avec jeton CSRF

Les lignes de code suivantes vous montrent le formulaire repensé à l'aide de jetons CSRF −

<form method="”post”"><form method = ”post” ><br/>   {{ csrf_field() }}<br/>   <label> Email </label><br/>   <input type = "text" name = "email"/><br/>   <br/><br/>   <label> Message </label><br/>   <input type = "text" name = "message"/><br/>   <input type = ”submit” name = ”submitButton” value = ”submit”><br/></form></form>

Le résultat obtenu renverra JSON avec un jeton comme indiqué ci-dessous −

{
   "token": "ghfleifxDSUYEW9WE67877CXNVFJKL",
   "name": "TutorialsPoint",
   "email": "contact@tutorialspoint.com"
}

Il s'agit du jeton CSRF créé en cliquant sur le bouton Soumettre.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Laravel - ContratsArticle suivant:Laravel - Contrats