0% ont trouvé ce document utile (0 vote)
10 vues2 pages

Protection CSRF dans Laravel

Transféré par

nasirsaid935
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)
10 vues2 pages

Protection CSRF dans Laravel

Transféré par

nasirsaid935
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

La protection CSRF

Vous allez créer une application Laravel simple où un utilisateur peut soumettre un formulaire. Nous allons
expérimenter avec et sans la protection CSRF pour observer son importance.

1. Créer un nouveau projet Laravel


Exécutez la commande suivante pour créer un nouveau projet Laravel :

composer create-project laravel/Laravel:^9 csrf-app


cd csrf-app
php artisan serve

Accédez à l'application dans votre navigateur à [Link]

2. Créer un formulaire simple


Ajoutez une nouvelle route dans routes/[Link] :
use Illuminate\Support\Facades\Route;
use Illuminate\Http\Request;

Route::get('/form', function () {
return view('form');
});
Route::post('/submit', function (Request $request) {
return 'Formulaire soumis avec succès : ' . $request->input('name');
});

Créez ensuite le fichier de vue resources/views/[Link] :

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Formulaire CSRF</title>
</head>
<body>
<h1>Soumission d'un formulaire</h1>
<form method="POST" action="/submit">
<!-- Jeton CSRF -->
@csrf
<label for="name">Nom :</label>
<input type="text" id="name" name="name" required>
<button type="submit">Envoyer</button>
</form>
</body>
</html>
3. Tester la soumission avec CSRF
Rendez-vous à [Link]
Remplissez le formulaire et cliquez sur "Envoyer".
Vous devriez voir un message confirmant que le formulaire a été soumis.

4. Désactiver la protection CSRF


Pour simuler une attaque CSRF, désactivez temporairement la protection dans
app/Http/Middleware/[Link] :
protected $except = [
'/submit',
];

Ensuite, rechargez le formulaire, et essayez de soumettre une requête sans le jeton CSRF :
Supprimez la ligne @csrf dans [Link].
Rechargez le formulaire et envoyez-le. Vous verrez que la soumission fonctionne même sans le jeton.

5. Simuler une attaque CSRF


Créez une page HTML externe (en dehors de Laravel) et insérez ce code :

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Attaque CSRF</title>
</head>
<body>
<form method="POST" action="[Link]
<input type="hidden" name="name" value="Hacker">
<button type="submit">Soumettre à votre insu</button>
</form>
</body>
</html>
Ouvrez ce fichier dans un navigateur, puis cliquez sur le bouton.
Si la protection CSRF est désactivée, la requête sera acceptée. Sinon, elle sera bloquée.

6. Réactiver la protection CSRF


Supprimez /submit de l'exception dans [Link], et réactivez @csrf dans [Link].

EXPLICATIONS

Avec CSRF activé : Laravel ajoute un jeton unique dans chaque formulaire. Si une requête ne contient pas ce
jeton, Laravel bloque la requête.
Sans CSRF : Un attaquant peut créer un formulaire malveillant et forcer un utilisateur connecté à envoyer
des requêtes non autorisées.

Vous aimerez peut-être aussi