Почему для защиты от XSS опасные символы нужно экранировать, а не удалять?
Вы можете запретить спец символы, например в username, email. Но это глупо делать в пароле или в контенте страницы, я думаю мало кто захочет читать статью без знаков препинания.
Потому, что кто-то придумал этот бред, а все - поддакивают.

Нелья делать НИ УДАЛЕНИЕ, НИ ЭКРАНИРОВАНИЕ! И вот почему:
1. Удаляем - "портим" представление и искажаем понимание реальной хранящейся информации в бд: данные на странице будут отличаться от данных в базе. И не факт, что это предотвратит XSS.
2. Экранируем - выводим всё, что в базе и позволяем искать "дыры", чтобы "ломать сайт полностью".

И, ВНЕЗАПНО! у нас есть 3-й вариант!
Правильно: валидировать целостность XML-структуры и "белый" список тегов в ней, если текст содержит символы открытия/закрытия тегов или любой из ограничителей строковых данных в xml-разметке. Не проходит валидацию - просто игнорировать (присваивать null, возвращать false, etc.).