Aller au contenu principal
Version: 4.x

đŸ™…đŸœâ€â™‚ïž CSRF Protection

Introduction​

Bow facilite la protection de votre application contre les attaques par contrefaçon de requĂȘte intersite (CSRF). Les falsifications de requĂȘtes intersites sont un type d'exploitation malveillante par lequel des commandes non autorisĂ©es sont effectuĂ©es pour le compte d'un utilisateur authentifiĂ©.

Bow gĂ©nĂšre automatiquement un "jeton" CSRF pour chaque session utilisateur active gĂ©rĂ©e par l'application. Ce jeton est utilisĂ© pour vĂ©rifier que l'utilisateur authentifiĂ© est celui qui envoie les requĂȘtes Ă  l'application.

Chaque fois que vous définissez un formulaire HTML dans votre application, vous devez inclure un champ de jeton CSRF masqué dans le formulaire afin que le middleware de protection CSRF puisse valider la demande:

<form method="POST" action="/upload">
{{{ csrf_field() }}}
...
</form>

Le middleware App\Middlewares\ClientCsrfMiddleware::class, qui est inclus dans le groupe de middleware Web, vĂ©rifie automatiquement que le jĂ©ton dans l'entrĂ©e de la requĂȘte correspond au jeton stockĂ© dans la session.

Jetons CSRF & JavaScript​

Lors de la crĂ©ation d'applications pilotĂ©es par JavaScript, il est pratique que votre bibliothĂšque HTTP JavaScript associe automatiquement le jeton CSRF Ă  chaque requĂȘte sortante.

Le middleware CSRF est automatiquement ajoutĂ© lors de l'exĂ©cution de chaque requĂȘte.

X-CSRF-TOKEN​

Outre la vĂ©rification du jeton CSRF en tant que paramĂštre POST, le middleware App\Middlewares\ClientCsrfMiddleware::class vĂ©rifie Ă©galement l’en-tĂȘte de demande X-CSRF-TOKEN. Vous pouvez, par exemple, stocker le jeton dans une balise META HTML:

<meta name="csrf-token" content="{{ csrf_token() }}">

Ensuite, une fois que vous avez crĂ©Ă© la balise <meta>, vous pouvez demander Ă  une bibliothĂšque comme jQuery d'ajouter automatiquement le jeton Ă  tous les en-tĂȘtes de requĂȘte. Cela fournit une protection CSRF simple et pratique pour vos applications basĂ©es sur AJAX:

$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});

X-XSRF-TOKEN​

Bow stock le jĂ©ton CSRF actuel dans un cookie XSRF-TOKEN inclus dans chaque rĂ©ponse gĂ©nĂ©rĂ©e par le Framework. Vous pouvez utiliser la valeur de cookie pour dĂ©finir l'en-tĂȘte de demande X-XSRF-TOKEN.

Ce cookie est principalement envoyĂ© par commoditĂ©, car certains Frameworks et bibliothĂšques JavaScript, comme Angular et Axios, placent automatiquement sa valeur dans l'en-tĂȘte X-XSRF-TOKEN.

Il manque quelque chose ?

Si vous rencontrez des problÚmes avec la documentation ou si vous avez des suggestions pour améliorer la documentation ou le projet en général, veuillez déposer une issue pour nous, ou envoyer un tweet mentionnant le compte Twitter @bowframework ou sur directement sur le github.