Bonjour à tous !

je suis entrain de codé une petit formulaire qui permet a utilisateur de poster un message, voila pour le contexte.

Sur la doc de cake php un point infos indique ceci :

"CakePHP already protects you against SQL Injection if you use CakePHP's ORM methods (such as find() and save()) and proper array notation (ie. array('field' => $value)) instead of raw SQL. For sanitization against XSS its generally better to save raw HTML in database without modification and sanitize at the time of output/display."

Je ne veut pas afficher de html sur ma page. Ma question est la suivante, pour l'instant j'utilise la procédure suivante :

  • Je clean mon message avant de le stocker dans ma base de donnée avec Sanitize::clean()
  • Lorsque je le display je sanitize le html avec sanitize::html($data, array("remove" => true)).

Quelle est la meillieur procédure ? Faire un sanitize::html avant de stocker dans la bdd pour ne garder que le texte brut ou sauvergarde tout le html et sanitize à affichage ?

D'après l'infos de cake php est préférable de stocker tout le html et filtrer au display, oui mais pourquoi ? sachant que le code html risque de prendre plus de place que le brute ?

Merci d'avance

Zaarkan

2 réponses


Grafikart
Réponse acceptée

Effectivement je conseil aussi la méthode de CakePHP (sauvegarder tel quel, filtrer au rendu) tout simplement si l'utilisateur veut plus tard pouvoir éditer son message il verra exactement le message qu'il avait tapé et non pas une version modifiée par le filtre. Après dans ton cas ou tu ne veux aucun code HTML dans le message le fait de filtrer avant n'est pas forcément pénalisant.

zaarkan
Auteur

Parfait merci :)