Je travaille actuellement sur un site web, où les utilisateurs peuvent écrire des articles avec quelques possibilités de format (comme gras, italique, liste...). J'utilise un framework : CodeIgniter.
Je suis un débutant, et j'ai entendu des choses sur les XSS. Je voudrais savoir ce que vous pensez de ma mise en œuvre. J'ai lu ce sujet : Quelle est la meilleure méthode pour assainir les entrées des utilisateurs avec PHP ?
1) L'utilisateur écrit son article, le met en forme avec le BBCode. J'utilise SCEditor.
2) Lorsque je l'enregistre dans la base de données, j'utilise htmlspecialchars() pour filtrer toute balise HTML suspecte. Suis-je censé faire cela lorsque je sauvegarde les données, ou lorsque j'affiche les données ?
3) Lorsque je veux afficher l'article sur le site web (pour d'autres utilisations par exemple), je convertis les balises BBCode en balises HTML.
Est-ce une bonne façon de faire ? Est-ce que j'évite les XSS ?
Je suis évidemment ouvert aux suggestions et aux conseils.
Merci pour vos réponses