# Sécurité

Dans ce chapitre nous allons parler de sécurité et plus particulièrement 2 middlewares mis en place. 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 (opens new window).

# 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 (opens new window) correspondant.

# Token

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

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.

# Validation

La librairie validation (opens new window), 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.