Стоит ли говорить что одним из столпов серьезного проекта является его безопасность. Одной из проблем в этой области являются xss уязвимости. В апи друпала есть функция filter_xss назначение которой как раз бороться с этой головной болью.
НО
функционал ее до безобразия убог. И не приемлем в большинстве проектов, где в качестве форматирования ввода используется html, а не, например, bbcode. И вот почему:
filter_xss фильтрует "опасные" тэги целиком, а не ОПАСНЫЕ атрибуты тэгов.
Например у нас есть необходимость разрешить использование тэга img. Но при этом каждому известно насколько опасно разрешать использование этого тэга целиком.
Выходит что использование стандартного апи нам тут ничем не поможет и нужно использовать что то серьезное вроде kses или аналогичные этому проекты.
Я уже было взялся писать свой фильтр(интегрирования kses в друпал), как опомнился и нашел на drupal.org замечательный модуль http://drupal.org/project/htmlpurifier который в том числе использует и kses.
Который всем и рекомендую.
простите за передеж в лужу.
Друпаловский filter xss хоть и деревянный как дуб дерево, но все таки позволяет фильтровать только опасные атрибуты, а не весь тэг целиком. Он конечно же не обладает той гибкостью как kses но вполне наджено и уверенно справляется со своей работой.
Моя ошибка была связана с тем что я при своих исследованиях не отключил сторонние фильтры которые и внесли сумятицу.
Комментарии
хм
Обнаружил для себя http://drupal.org/project/htmLawed
Это вообще песня.
Во первых, он корректирует HTML и приводит его к полностью валидному xHTML.
Сюда включается как закрытие не закрытых тегов, так и замена устаревших тегов (например font или u).
Во вторых, он грамотно фильтрует атрибуты. Всем известная проблема с атрибутом style перестает быть проблемой.
Из расширенных настроек:
- можно задавать разную фильтрацию для разных типов материалов
- для разных полей материала
- для разных юзеров
- можно выбрать как фильтровать, при выводе или при сохранении.