[LARAVEL] CSRF

mardi 23 janvier 2018

La faille CSRF (« Cross site request forgery ») cherche a exécuter des actions à l’insu de l’utilisateur directement sur le serveur.Et cette faille est compatible avec n’importe quel site, pour peu que vous y soyer connecté. Si vous êtes connecté à votre compte Facebook, le hacker peut se servir d’un CSRF pour vous faire aimer une page, publier un message, etc… Et cela marche avec beaucoup de sites, pour peu que vous y soyez connecté et qu’il ne soit pas protégé.

Comment s’y protégé

Il n’existe malheureusement pas de protection parfaite contre la CSRF. La façon la plus rependue étant l’utilisation d’un jeton unique qui sera vérifié à chaque modification.

Laravel

Le framework Laravel permet de gérer automatiquement ce système de jeton. Laravel automatiquement génère un CSRF « token » pour chaque utilisateur actif en session et gérer par l’application de manière transparente.

En effet, par défaut un middleware VerifyCsrfToken est actif dans laravel et il faut donc inclure dans chaque formulaire de vos vue le code suivant:

<form method="POST" action="/profile">
    {{ csrf_field() }}
    ...
</form>

Et voilà le tour est joué Laravel s’occupe du reste!

Par contre, il est aussi possible d’exclure certaines route de cette vérification.

Pour cela, il suffit de rajoute nos routes dans la propriété $except = [] de la classe App\Http\Middleware\VerifyCsrfToken.php