Laravel - Protection CSRF

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

Laravel offre la 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é.

la mise en oeuvre

La mise en œuvre de la protection CSRF dans Laravel est discutée en détail dans cette section. Les points suivants sont notables avant de continuer 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é masqué 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 cela inclut un jeton CSRF pour chaque demande sortante.

  • Le fichier à savoir resources/assets/js/bootstrap.js enregistre tous les jetons pour les applications Laravel et inclut meta étiquette qui stocke csrf-token avec Axios HTTP library.

Formulaire sans jeton CSRF

Considérez les lignes de code suivantes. Ils montrent une forme qui prend deux paramètres en entrée:email et message.

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

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

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

Veuillez noter que le bouton d'envoi inclut des fonctionnalités dans la section contrôleur. lepostContactLa fonction est utilisée dans les contrôleurs pour ces vues associées. Il est montré ci-dessous -

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

Notez que le formulaire n'inclut aucun jeton CSRF, de sorte que 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 re-conçu à l'aide de jetons CSRF -

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

La sortie obtenue renverra JSON avec un jeton comme indiqué ci-dessous -

{
   "token": "ghfleifxDSUYEW9WE67877CXNVFJKL",
   "name": "TutorialsPoint",
   "email": "[email protected]"
}

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