XSS-фильтр на PHP с DOMDocument и XPath

Навеяно http://habrahabr.ru/blogs/webdev/70903/ — много чего идеологически взято оттуда.
Но код там написан неудобно для меня, поэтому написал свой класс (3 класса) для фильтрации пользовательского контента.

Делает следующее: вырезает все неразрешённые теги, в разрешённых при этом удаляет все неразрешённые атрибуты.
После этого для всех ссылок на сторонние сайты проставляет атрибут target=»_blank». После этого проверяет все атрибуты всех тегов, где может встречаться ссылка (img src, к примеру) и если протокола нет среди разрешённых (используется parse_url), добавляется http://.
Работает небыстро.
Использовать при публиковании.
TagsStripper — здесь все классы
index — пример использования
TestTagsStripper — тесты

One Response so far.

  1. В свое время тоже столкнулся с проблемой защиты от XSS. Написал для этой цели PHP класс. Правда в нем я отказался от фильтрации атрибутов тэгов. В них просто экранируются спец. символы. Если интересно подробно почитать можно здесь http://savvateev.org/blog/36/

LEAVE A COMMENT