0% ont trouvé ce document utile (0 vote)
5 vues4 pages

Protection CSRF dans Laravel expliquée

La protection CSRF dans Laravel est essentielle pour prévenir les attaques où un utilisateur authentifié exécute des actions malveillantes. Laravel génère un jeton CSRF pour chaque session, qui doit être inclus dans les requêtes POST, PUT, PATCH ou DELETE, et permet d'exclure certaines routes de cette protection. La gestion des jetons peut également être intégrée dans les requêtes AJAX via des en-têtes spécifiques.

Transféré par

aracasablanca7
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
5 vues4 pages

Protection CSRF dans Laravel expliquée

La protection CSRF dans Laravel est essentielle pour prévenir les attaques où un utilisateur authentifié exécute des actions malveillantes. Laravel génère un jeton CSRF pour chaque session, qui doit être inclus dans les requêtes POST, PUT, PATCH ou DELETE, et permet d'exclure certaines routes de cette protection. La gestion des jetons peut également être intégrée dans les requêtes AJAX via des en-têtes spécifiques.

Transféré par

aracasablanca7
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Protection CSRF dans Laravel

Résumé
24 Février 2025

1 Introduction
La protection CSRF (Cross-Site Request Forgery) est une mesure de sé-
curité essentielle dans Laravel pour prévenir les attaques où un utilisateur
authentifié exécute involontairement des actions malveillantes.

2 Génération et Utilisation du Jeton CSRF


— Laravel génère un jeton CSRF pour chaque session utilisateur.
— Ce jeton est stocké dans la session et est comparé avec le jeton envoyé
dans les requêtes.

3 Ajout du Jeton dans un Formulaire


Chaque requête POST, PUT, PATCH ou DELETE doit inclure un jeton
CSRF :
< form method = " POST " action = " / profile " >
@csrf
< input type = " text " name = " name " required >
< button type = " submit " > Envoyer </ button >
</ form >

Cela est équivalent à :


< input type = " hidden " name = " _token " value = " {{ ␣ csrf_token () ␣ }} "
>

1
4 Récupération du Jeton CSRF
4.1 Depuis la session
use Illuminate \ Http \ Request ;

Route :: get ( ’/ token ’ , function ( Request $request ) {


return $request - > session () -> token () ;
}) ;

4.2 Avec csrf_token()


Route :: get ( ’/ token ’ , function () {
return csrf_token () ;
}) ;

4.3 Dans une Vue Blade


<p > Votre token CSRF : {{ csrf_token () }} </ p >

4.4 Utiliser csrf_field()


contenant le jeton CSRF pour les formulaires HTML :
< form method = " POST " action = " / profile " >
{{ csrf_field () }}
</ form >

2
5 Exclusion de Routes de la Protection CSRF
Certaines routes (ex. : webhooks Stripe) doivent être exclues :
namespace App \ Http \ Middleware ;

use Illuminate \ Foundation \ Http \ Middleware \ VerifyCsrfToken as


Middleware ;

class VerifyCsrfToken extends Middleware {


protected $except = [
’ stripe /* ’ ,
’ http :// example . com / api /* ’ ,
];
}

6 En-têtes CSRF et XSRF


6.1 X-CSRF-TOKEN
Laravel permet d’ajouter le token CSRF dans l’en-tête d’une requête
AJAX :
< meta name = " csrf - token " content = " {{ ␣ csrf_token () ␣ }} " >

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

6.2 X-XSRF-TOKEN
Laravel stocke aussi le token dans un cookie XSRF-TOKEN, utilisé par
certaines bibliothèques comme Axios :
axios . defaults . headers . common [ ’X - XSRF - TOKEN ’] = getCookie ( ’
XSRF - TOKEN ’) ;

3
7 Test d’Erreur CSRF (419 Page Expired)
Pour tester la protection CSRF, soumettez un formulaire sans jeton et
vous obtiendrez une erreur :
419 | Page Expired

8 Conclusion
Laravel fournit une protection CSRF robuste grâce aux jetons inclus au-
tomatiquement dans les sessions et formulaires. Il est possible d’exclure cer-
taines routes si nécessaire et d’utiliser des en-têtes pour la gestion AJAX.

Vous aimerez peut-être aussi