0% ont trouvé ce document utile (0 vote)
3 vues14 pages

Protection CSRF avec 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)
3 vues14 pages

Protection CSRF avec 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

Protection CSRF

CROSS SI T E REQUEST FORGERY


Introduction

▪ Les falsifications de requêtes intersites sont un type d'exploit


malveillant par lequel des commandes non autorisées sont
exécutées au nom d'un utilisateur authentifié. Heureusement,
Laravel facilite la protection de votre application contre les
attaques de cross-site request forgery (CSRF)
Une explication de la vulnérabilité

▪ Si vous n'êtes pas familier avec les falsifications de requêtes


intersites, discutons d'un exemple de la façon dont cette
vulnérabilité peut être exploitée. Imaginez que votre
application dispose d'une route /user/email qui accepte une
demande POST de modification de l'adresse e -mail de
l'utilisateur authentifié. Très probablement, cette route
s'attend à ce qu'un champ de saisie email contienne l'adresse
e-mail que l'utilisateur souhaite commencer à utiliser.
Prévenir les requêtes CSRF
Une explication de la vulnérabilité

▪ Sans protection CSRF, un site Web malveillant pourrait créer


un formulaire HTML qui pointe vers la route /user/email de
votre application et soumet la propre adresse e -mail de
l'utilisateur malveillant :

▪ Pour éviter cette vulnérabilité, nous devons inspecter chaque


demande entrante POST, PUT, PATCH ou DELETE pour une
valeur de session secrète à laquelle l'application malveillante
ne peut pas accéder.
Prévenir les requêtes
CSRF
Prévenir les requêtes CSRF

▪ Laravel génère automatiquement un jeton " token" CSRF pour


chaque session utilisateur active gérée par l'application. Ce
jeton (token) est utilisé pour vérifier que l'utilisateur
authentifié est la personne qui fait réellement les requêtes à
l'application. Étant donné que ce jeton est stocké dans la
session de l'utilisateur et change à chaque régénération de la
session, une application malveillante ne peut pas y accéder.
Prévenir les requêtes CSRF

▪ Le jeton CSRF de la session en cours est accessible via la


session de la requête ou via la fonction d'assistance
csrf_token :

use Illuminate\Http\Request;

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


$token = $request->session()->token();
$token = csrf_token();
// ...
});
Prévenir les requêtes CSRF

▪ Chaque fois que vous définissez un formulaire HTML "POST",


"PUT", "PATCH" ou "DELETE" dans votre application, vous
devez inclure un champ _token CSRF caché dans le
formulaire afin que le middleware de protection CSRF puisse
valider la demande.
Prévenir les requêtes CSRF

▪ Pour plus de commodité, vous pouvez utiliser la directive


@csrf pour générer le champ de saisie du jeton caché :

<form method="POST" action="/profile">


@csrf
<!-- Equivalent to... -->
<input type="hidden" name="_token" value="{{ csrf_token() }}" />
</form>
Prévenir les requêtes CSRF

▪ Le middleware App\Http\Middleware\VerifyCsrfToken , qui est


inclus dans le groupe middleware web par défaut, vérifiera
automatiquement que le jeton dans l'entrée de la requête
correspond au jeton stocké dans la session. Lorsque ces deux
jetons correspondent, nous savons que l'utilisateur authentifié
est celui qui lance la requête.
Exclure les URI de la protection CSRF

▪ Parfois, vous souhaiterez peut-être exclure un ensemble d'URI


de la protection CSRF.

▪ Par exemple, si vous utilisez Stripe pour traiter les paiements


et utilisez leur système de webhook, vous devrez exclure
votre route de gestionnaire de webhook Stripe de la
protection CSRF car Stripe ne saura pas quel jeton CSRF
envoyer à vos routes.
Exclure les URI de la protection CSRF

▪ En règle générale, vous devez placer ces types de routes en


dehors du groupe de middleware web
App\Providers\RouteServiceProvider qui s'applique à toutes les
routes du fichier routes /[Link]. Cependant, vous pouvez
également exclure les routes en ajoutant leurs URI à la
propriété $except du middleware VerifyCsrfToken :
<?php
namespace App\Http\Middleware;
Exclure les URI de la protection CSRF
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as
Middleware;

class VerifyCsrfToken extends Middleware


{
/**
* The URIs that should be excluded from CSRF verification.
*
* @var array
*/
protected $except = [
'stripe/*',
'[Link]
'[Link]
];
}

Vous aimerez peut-être aussi