самое большое заблуждение, это то, что разработчики позволяют себе спокойно резать html теги в сообщениях пользователей перед занесениме в БД, применять к этим же данным htmlspecialchars и т.д. Это неправильно. Если юзер ввел html код там, где неположенно, то надо ему об этом сказать, предупредить его. Почему это так распространено в невебовых приложениях а в вебовых не очень... Кто-то скажет, что потом, при редактировании можно все преобразовать в исходный вид и показать пользователю. Но зачем усложнять себе жизнь? Зачем потом измененные данные прогонять через парсер, просто чтобы экспортировать в другой, сторонний формат? Легче забить в базу все как есть и в зависимости от ситуации выводить как надо, в нужном представлении. А вот в некоторых приложениях (CMS, как правильно сказал _RVK_) вообще не надо ничего резать. Надо просто умело распределять права (кому-то дать возможность публиковать plain-text кому-то html).
PS: в абсолютно любых приложениях надо, очень надо эскейпить данные, перед использованием в запросах к БД. Все остальные данные должны проверяться валидатором, на соответствие внутреннему формату (если в поле должны ввести телефон, то надо проверить, пришел телефон или матерное слово) и вслучае неуспешной проверки выводить КРАЙНЕ информативное сообщение пользователю (это не просто финтеклюшка а удобство интерфейса). Если данные прошли через валидатор- то они безопасны! Их только надо эскейпить при запросах к БД.