Что вы здесь описываете, это две отдельные проблемы:
1) Пользовательский вход всегда должен считаться плохим.
Использование подготовленных операторов или / и фильтрация с помощью mysql_real_escape_string, безусловно, необходимо. PHP также имеет встроенный filter_input, в котором есть хорошее место для запуска.
2) Это большая тема, и это зависит от контекста выводимых данных. Для HTML существуют такие решения, как htmlpurifier. как правило, всегда избегайте всего, что вы выводите.
Обе проблемы слишком велики, чтобы входить в одну запись, но есть много сообщений, которые более подробно рассматриваются: