Sécurité

Dans ce chapitre nous allons parler de sécurité et plus particulièrement 2 middlewares mis en place dans le framework. Il s'agit des middlewares CsrfMiddleware et TokenMiddleware.

Csrf

Ce middleware est implémenté via composer, il s'agit du middleware pour les failles csrf que slim nous propose d'utiliser.

Pour ceux qui ne savent pas ce que sont les failles csrf, je vous envoie ici.

Les requêtes Post

Pour gérer la sécurité des formulaires, le middleware est activé sur toute les vues, vous le trouverez dans le fichier app/config/routes.php. Une fois ceci vérifié, vous n'avez qu'une chose à faire, c'est de faire appel à la fonction csrf() dans twig :

<form class="" action="index.html" method="post">
  <input type="text" name="test" value="">
  <input type="submit" value="Envoyer">
  {{ csrf() }}
</form>

Cette fonction vas ajouter 2 input hidden comportant le token et la clef.

Une fois le formulaire rempli et envoyé, dans la partie controller vous aurez à faire un simple if() pour vérifier la validité du token :

<?php
if (false === $request->getAttribute('csrf_status')) {
    // En cas d'erreur (token invalide)
} else {
    // En cas de token valide
}

Les requêtes Get

Il est aussi possible d'utiliser le middleware pour les requêtes get, mais celà peut sembler compliqué pour certains, du coup j'ai écris un middleware pour gérer cette partie. Toutefois si vous souhaitez utiliser celle-ci, je vous renvoie au dépot github qui en parle.

Token

Middleware pour la gestion de token des requêtes get. Ce middleware permet de générer un token, utilisable dans votre vue twig avec la fonction token() qui retourne tout simplement le token de la session en cours.

Pour pouvoir vérifier la validitée du token côté controller, vous avez à votre disposition la fonction tokenCheck($token) qui se trouve dans le controller parent. Il vous retourne tout simplement true en cas de succès, false sinon.

note

Vous pouvez très bien supprimer ces middlewares si vous souhaitez utiliser d'autre à la place, n'oubliez pas le composer remove slim/csrf dans ce cas là.

Validation

La librairie validation, un moteur de validation de données est pré-installé de base, il est principalement utiliser pour vérifier les données des formulaires soumis.

Note

vous pouvez très bien retirer ce validateur avec la commande composer remove respect/validation et en utiliser un autre.