Символы не могут представлять опасность.
Опасность может представлять несоблюдение правил чего-либо. Если носить деньги в открытой сумке, их могут украсть, если не мыть руки перед едой, может быть понос, если заниматься незащищенным сексом с кем попало, можно подцепить вензаразу. Это все опасности, но разные, и меры защиты от каждой должны применяться к месту (о чем говорил выше bars80080). Наивно думать, будто от всех этих напастей поможет заворачивание денег в чисто вымытый с мылом презерватив (или "волшебная фильтрация" от любых порчи и сглаза "опасных символов" на входе
База данных может хранит любые символы - опасных символов для нее не существует. А вот опасные запросы существуют - например, вместо "SELECT passw FROM users WHERE id=715" некто пропихнет запрос "SELECT passw FROM users WHERE id=751 OR 1" и получит полный список паролей. Тупо "фильтровать" ввод тут бесполезно - например, если тут просто вырезать OR, то гад может всунуть "...WHERE id=715 OORR 1" и после фильтрации получится как раз то, что ему надо. Нужно не "символы фильтровать", а обеспечить, чтобы независимо от входящих данных запрос получился такого вида, как надо нам. Фактически для этого достаточно соблюдать два простых правила, о которых хорошо написано здесь.
Точно так же HTML может выводить на экран абсолютно любые символы - просто нужно помнить, что < и > в нем ограничивают теги, поэтому чтобы вывести их как символы - нужен htmlspecialchars. А значения атрибутов должны обязательно быть в кавычках, иначе первый же пробел станет началом нового атрибута. И опять же, как и с запросами - нужно четко представлять, HTML какого вида надо построить в результате вывода: что вывести как теги, что - как текст, а что лучше вообще убрать. Тогда и никакой XSS не страшен. И лучше делать это не при вводе данных, а именно при выводе - иначе "раскодировать" исходную информацию, если она вдруг понадобится (скажем, для RSS-фида или WAP-версии сайта) будет ох как проблематично.
Ну а если мы явно видим, что нам шлют данные, совсем не похожие на то, что мы ожидаем для нашей задачи - такой запрос лучше просто послать лесом (редиректнуть на главную страницу, выдать 500-ю ошибку или навсегда забанить по IP - по вкусу, в зависимости от суровости автора сайта

. Но именно отбросить весь "неправильный" запрос. А не заниматься самолечением попытками наобум "оживить" его с помощью какой-то наивной "фильтрации"...