Bonjours,

Encore et toujours moi, j'expérimente beaucoup de choses pendant ces vacances et je me suis lancé la quête de coder mon propre mini forum, un truc assez basique mais très élégant, donc j'ai pris l'éditeur TinyMCE qui allais parfaitement pour mon forum, mais une fois mis en place je me suis dit "mais sa doit être un nid à faille web sa" en termes de XSS,SQL...

Après avoir fait environ 50 preg_replace afin de convertir mon code html au moment de la sauvegarde en BDD en BBCode histoire de n'avoir rien de problématique je me suis dit "c'est pas possible un mec à tous déjà du faire", j'ai donc arpenter google, git, stackoverflow mais j'ai trouvés que des truc viable en 2005-2012...

Puis-je me suis poser la question suivante: "Mais de quoi avoir peur au final ? Symfony empêche de lui même les failles XSS, et Doctrine empéche les injection SQL"...

Donc voilà j'aimerais avoir votre avis: "Dois-je enregistrer le html sans le convertir en bbcode ou autres dans la base de donnée ? Ou dois-je me tourner vers d'autres options ?"

J'ai également vu les éditeur WYSIWYG Markedown assez connu, mais je voit qu'il faut bower, et node pour la pluspart et je ne les ai jamais utilisés je sais vraiment pas comment intégrer sa sur mon projet Symfony (je connais simplement composer avec packagist)..

Voilà, merci à vous et désoler si mes questions paraissent "bête" mais je suis un simple développeur junior, et j'éxperimente tous seul donc assez difficile par moment !

Bon code à tous !
PS: Pardon pour les fautes d'orthographes :/

4 réponses


JeremyB
Réponse acceptée

Je pense que tu fais référence lors de l'affichage d'une variable avec Twig, il doit échapper ce qu'il faut. Je connais plus Laravel que Symfony, le moteur de template Blade protège les variables contre les failles XSS via {{ ta_variable }}. Sauf que {{ }} équivaut à une fonction e() propre à Laravel, qui n'est autre que htmlspecialchars() (ou htmlentities, je ne suis pas sûr). HTMLPurifier est un plus car il te permet via une config de dire que tu acceptes qu'un utilisateur puisses utiliser des paragraphes < p > mais pas de gros titres < h1 > (qui sera convertit en (<h1>).

Salut,

Pour l'enregistrement, si Doctrine empêche les injections SQL, tu peux tout à fait enregistrer le html directement. Pour le rendu, regarde du côté de HTMLPurifier. Je pense que tu auras la réponse à ta recherche. Ça autorise les balises que tu auras validé dans ta config.

Merci de ta réponse, j'ai entendu parler de HTMLPurifier, mais j'ai entendu parler qu'un module dans Symfony évitais déjà les failles XSS, j'aurai aimé la confirmation, afin de savoir si je doit me tourner obligatoirement vers HTMLPurifier ou non

Merci beaucoup pour ton explication ! J'ai ajouté HTMLPurifier sa ma pris quelques minutes merci a toi et bonne continuation