4 Les Bases de Laravel 11 : Protection CSRF

La falsification de requete intersite (CSRF) est un type d'exploit malveillant ou des commandes non autorisees sont executees au nom d'un utilisateur authentifie. Laravel facilite la protection de votre application contre les attaques CSRF.
Introduction a la Protection CSRF
Les attaques CSRF exploitent la confiance qu'un site a dans le navigateur de l'utilisateur. Laravel genere automatiquement un jeton CSRF pour chaque session utilisateur active. Ce jeton est utilise pour verifier que l'utilisateur authentifie est bien la personne qui effectue les requetes.
Prevenir les Requetes CSRF
Laravel genere automatiquement un "jeton" CSRF pour chaque session utilisateur active. Ce jeton est utilise pour verifier que l'utilisateur authentifie est bien la personne qui effectue les requetes a l'application.
Vous pouvez acceder au jeton CSRF de la session actuelle via la session de la requete ou la fonction d'aide csrf_token :
use Illuminate\Http\Request;
Route::get('/token', function (Request $request) {
$token = $request->session()->token();
$token = csrf_token();
// ...
});Chaque fois que vous definissez un formulaire HTML "POST", "PUT", "PATCH" ou "DELETE" dans votre application, vous devez inclure un champ _token CSRF cache dans le formulaire afin que le middleware de protection CSRF puisse valider la requete. Pour plus de commodite, vous pouvez utiliser la directive Blade @csrf pour generer le champ de saisie de jeton cache :
<form method="POST" action="/profile">
@csrf
<!-- Champs du formulaire -->
</form>Le middleware ValidateCsrfToken, qui est inclus dans le groupe de middleware web par defaut, verifiera automatiquement que le jeton dans l'entree de la requete correspond au jeton stocke dans la session.
Jetons CSRF et SPAs
Si vous construisez une SPA qui utilise Laravel comme backend API, consultez la documentation Laravel Sanctum pour des informations sur l'authentification avec votre API et la protection contre les vulnerabilites CSRF.
Exclure des URIs de la Protection CSRF
Parfois, vous pouvez souhaiter exclure certaines URIs de la protection CSRF. Par exemple, si vous utilisez Stripe pour traiter les paiements et utilisez leur systeme de webhooks, vous devrez exclure votre route de gestionnaire de webhook Stripe de la protection CSRF. Vous pouvez le faire en fournissant les URIs a la methode validateCsrfTokens dans le fichier bootstrap/app.php de votre application :
->withMiddleware(function (Middleware $middleware) {
$middleware->validateCsrfTokens(except: [
'stripe/*',
'http://example.com/foo/bar',
'http://example.com/foo/*',
]);
});X-CSRF-TOKEN
En plus de verifier le jeton CSRF comme parametre POST, le middleware ValidateCsrfToken verifiera egalement l'en-tete de requete X-CSRF-TOKEN. Vous pourriez, par exemple, stocker le jeton dans une balise meta HTML :
<meta name="csrf-token" content="{{ csrf_token() }}">Ensuite, vous pouvez demander a une bibliotheque comme jQuery d'ajouter automatiquement le jeton a tous les en-tetes de requete. Cela fournit une protection CSRF simple et pratique pour vos applications basees sur AJAX utilisant la technologie JavaScript heritage :
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});X-XSRF-TOKEN
Laravel stocke le jeton CSRF actuel dans un cookie XSRF-TOKEN chiffre qui est inclus avec chaque reponse generee par le framework. Vous pouvez utiliser la valeur du cookie pour definir l'en-tete de requete X-XSRF-TOKEN. Ce cookie est principalement envoye par commodite pour les developpeurs car certains frameworks et bibliotheques JavaScript, comme Angular et Axios, placent automatiquement sa valeur dans l'en-tete X-XSRF-TOKEN sur les requetes de meme origine.
En savoir plus sur la protection CSRF dans la documentation officielle de Laravel.
Conclusion
La protection CSRF est essentielle pour securiser les applications web. Ce tutoriel a couvert comment utiliser les jetons CSRF dans Laravel 11 pour proteger votre application contre les attaques CSRF. Pour des informations plus detaillees, consultez la documentation officielle de Laravel.
Bon codage avec Laravel 11 !
Discutez de votre projet avec nous
Nous sommes ici pour vous aider avec vos besoins en développement Web. Planifiez un appel pour discuter de votre projet et comment nous pouvons vous aider.
Trouvons les meilleures solutions pour vos besoins.
Articles connexes

5 Les Bases de Laravel 11 : Controllers
Un guide informatif sur les bases des controllers dans Laravel 11, adapte aux developpeurs de tous niveaux.

3 Les Bases de Laravel 11 : Middleware
Un article instructif sur les bases du middleware dans Laravel 11.

1 Les Bases de Laravel 11 : PHP en 15 minutes
Un article instructif qui enseigne les bases du langage de programmation PHP.