В этой части цикла статей о разработке баг трекера мы рассмотрим добавление записей о багах и комментариев к ним.
Вообще-то обе эти операции сводятся к добавлению записей в таблицы bugs и comments, т.е. их можно выполнить с помощью всего пары строк кода.
Но, как несложно догадаться, основная часть работы будет заключаться в обработке данных.
Кроме того, нужно сразу решить вопрос с тегами и защитой от XSS атак.
Проблема следующая. Если разрешить пользователям вставлять в текст описания багов любые HTML теги и не выполнять никаких проверок, то кто угодно сможет провести любую XSS атаку. Например, вставить скрипт с редиректом на свой ресурс.
С другой стороны, если фильтровать все теги, то посетители не смогут использовать жирный шрифт, курсив и т.п.
Решить проблему можно с помощью bbCodes или фильтрацией части тегов. Например, теги script
удаляем, а strong
– не трогаем.
Я решил выбрать второй вариант. Тем более что его не сложно реализовать с помощью библиотеки HTML Purifier. Кроме фильтрации опасных тегов, библиотека исправляет ошибки в разметке. Например, добавляет закрывающие теги.
Подключение HTML Purifier к CodeIgniter.
Читать дальше