L'injection SQL est dans la plupart des cas facilement évitée grâce à l'utilisation d'instructions préparées.
XSS est plus difficile si vous prévoyez d'autoriser les utilisateurs à publier un balisage HTML. Vous devez supprimer tous les <script>
balises, toutes on*
attributs des balises, tous javascript:
urls, et même dans ce cas, il n'est probablement pas entièrement garanti de sécuriser l'entrée HTML. Il existe des bibliothèques telles que HTMLPurifier
cela peut aider, mais tant que vous autorisez le HTML, vous risquez de laisser passer quelque chose de malveillant.
Vous pouvez utiliser une bibliothèque qui implémente quelque chose comme le démarquage ou le wikitext à la place. Cela limite considérablement ce que les utilisateurs peuvent saisir, tout en leur permettant de marquer le contenu dans une certaine mesure. Ce n'est pas à toute épreuve (les gens peuvent toujours publier des liens vers des sites malveillants et espérer que les utilisateurs cliquent dessus, ce que certains seront assez naïfs pour faire), et vous ne pourrez pas utiliser un éditeur riche tel que TinyMCE sans une sorte du plugin, mais c'est un travail beaucoup plus simple de nettoyer le démarquage que de nettoyer le HTML.