FLOW3 / Extbase – Vérification du paramètre __hmac dans les formulaires

Publié le Mis à jour le

Si vous travailler sous Extbase, vous savez certainement que les champs de vos formulaires sont mappées sur les données de vos modèles. Par exemple, si je veux ajouter un article sur mon blog, je vais devoir compléter les champs suivants :
– Titre
– Catégorie(s)
– Introduction
– Texte

Ces champs existent dans ma table « posts » (title / category / short … pour simplifier les noms) mais c’est le modèle qui est chargé de décrire chaque champ, le format attendu et propose les différentes méthodes d’accès à ces valeurs. D’ailleurs, si vous décortiquez une extension créée avec Extbase, vous noterez que chaque entité ou objet à son propre fichier de déclaration… C’est le modèle.

Vous pouvez ainsi effectuer des opérations de mise à jour, d’édition ou de suppression de données très simplement ! Le contrôleur vous renverra éventuellement des erreurs après consultation du modèle.

C’est alors qu’est apparu un problème de sécurité dans les formulaires généré sous FLOW3 et Extbase. En effet, un utilisateur mal intentionné pourrait modifier un formulaire et contourner ainsi le modèle de chaque objet.

La solution qui a été trouvée, est de vérifier que le formulaire n’a pas été modifié entre l’affichage et le renvoi des données en GET ou POST, sinon, c’est considéré comme une attaque. Et comment ?

En fait, le framework collecte une liste de champs qui peuvent être envoyés depuis un formulaire. Cette liste est protégée par une une clé privée et un hash. Pour informations, un hash est une sorte de clé calculée à partir de données et permet d’accéder rapidement à ces dernières. La liste est le hash de la liste sont stockés dans un paramètre __hmac dans le formulaire et sur le serveur. Si le paramètre __hmac n’est pas valide, une exception est envoyée.

Personnellement, il m’arrive de créer des formulaires en Typoscript pour interroger un contrôleur hors de son contexte afin de me renvoyer une liste d’enregistrement. La conception d’une formulaire en Typoscript est aisée et plus rapide. En revanche, sans paramètre __hmac, une exception s’affiche lors de l’envoi du formulaire. Comment faire ?

J’ai trouvé une solution simple sur le Wiki suivant : http://wiki.typo3.org/User:Layne_obserdia/Extbase

Ajoutez @dontverifyrequesthash dans les annotations qui précèdent le contrôleur indexAction par exemple.

Publicités