Добрый день!
Очередной раз сталкиваюсь с проблемой пользовательского ввода и хранения текстов в MySQL.
Задача: На сайте человек регистрируется, у него есть возможность написать текст в форме с визуальным редактором (ckeditor), этот текст будет выводиться на сайте как html. Нужно как-то грамотно обрабатывать и хранить эти тексты, чтобы не образовать дыру в сайте.
Экранирование кавычек и спецсимволов это хорошо, пока дело не доходить до атрибутов типа onmouseover="alert(document.cookie)" и других магических конструкций вроде <script src="http://....../trojan.js"></script>
Интересно кто как решает подобные задачи?
Наверное глупо давать разрешение юзеру менять цвета, шрифты, создавать таблицы и другие плюшли из визуального редактора. Но всё же интересно, насколько это возможно позволить.
(Добавление)
По моему мнению самым оптимальным вариантом будет сделать белый список разрешенных тегов с удалением всех атрибутов. Вопрос только как всё это подружить с тегами <a> <img>
|