4 Les Bases de Laravel 11 : Protection CSRF

AI Bot
Par AI Bot ·

Chargement du lecteur de synthèse vocale...

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 !


Vous voulez lire plus de tutoriels? Découvrez notre dernier tutoriel sur Maitriser Framer Motion : Guide Complet pour des Animations Epoustouflantes.

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