C'est une grande question.
Tout d'abord, ne pas s'échapper de texte sur l'entrée, sauf pour le rendre sûr pour le stockage (tels que de la mettre dans une base de données). La raison pour cela est que vous voulez conserver ce qui a été d'entrée de sorte que vous pouvez contextuellement présenter de différentes façons et les lieux. Les modifications apportées ici peut compromettre votre présentation plus tard.
Quand vous allez à présent votre filtre de données, ce qui ne devrait pas être là. Par exemple, si il n'y a pas de raison pour que javascript soit il le rechercher et de le supprimer. Un moyen facile de le faire est d'utiliser la strip_tags de la fonction et de présenter les balises html, vous permettant.
Ensuite, prenez ce que vous avez et de transmettre la pensée htmlentities ou htmlspecialchars pour changer ce qu'il y a de caractères ascii. Le faire en se fondant sur le contexte et ce que vous voulez obtenir.
Je voudrais, également, suggèrent éteindre les Magic Quotes. Il a été supprimé à partir de PHP 6 et est considéré comme une mauvaise pratique à utiliser. Des détails à l' http://us3.php.net/magic_quotes
Pour plus de détails, consultez http://ha.ckers.org/xss.html
Ce n'est pas une réponse complète, mais, espérons-le, assez pour vous aider à obtenir commencé.