| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Тексты > Обезопасить html |
| Автор: nerezus 6.1.2009, 21:28 |
| Собственно никогда не ожидал, что задам такой тупой вопрос. Есть html, пришедший от пользователя. Надо добавить его на стараницу. Как это сделать безопасно относительно CSS и проблем в верстке? Примеры проектов, где это сделано: lj, mail.ru и т.д. Вопрос: как? Просьба не предлагать унылые варианты вроде "Да регекспами" или "Удали все <script> и т.д.". Нужно нормальное решение, думаю, что некоторые с этим работали. Пока я знаю решение(машина состояний с 2 режимами(html/css)), но не улыбает меня это руками писать. |
| Автор: nerezus 6.1.2009, 21:45 |
| http://drupal.org/project/safehtml Пока юзаю скрипт отсюда. |
| Автор: ksnk 6.1.2009, 21:49 |
| Задача как-то сильно абстрактно сформулирована... Может BB коды? Можно разделить юзеров на группы с разными привилегиями. С нулевой привилегией делать striptags на все, что не соответствует тегам U,I,B,STRONG, H1,H2,H3, BR, P, ... стили выкинуть. Со следующими - позволять вольности со стилями (список прилагается в документации...) в тегах, но не более,... и так далее,... суровым одминам позволять фсё... Юзер как захочет, настолько глубоко и закопается... |
| Автор: nerezus 7.1.2009, 08:30 |
| ksnk, нет, мне нужно, чтобы все пользователи могли постить html. Надо обезопаситься от XSS. |
| Автор: ksnk 7.1.2009, 09:12 |
| nerezus, Ну тогда это будет что-то большое умное и монстрообразное, на вроде этого самого safehtml. А сам он чем не устраивает? Вроде обещают какую-то особую гибкость в настройке и на первый взгляд не особенно и врут Как вариант немного другого подхода - можно разбить вводимый юзером текст на элементарные блоки. Для каждого блока состряпать формочку ввода с вариантами размещения элементов. -- заголовок- текст жестко обрезать от лишних тегов. Выравнивать по разным сторонам + размер заголовка. -- текст + фото - текст жестко обрезать от лишних тегов, оставляя только болд-неболд++. Фотографию подпихивать справа-флот или слева флот или по центру - нефлот. -- список ссылок - комплект ссылок по столбикам -- табличку вставить -- еще чего по надобности. Каждый элементарный блок можно достаточно жестко урезать в стилях, и для каждого блока написать шаблон, который будет укладываться в дизайн сайта. Так как бы и юзер сможет достаточно много информации написать и в дизайн сайта достаточно несложно вписаться и за безопасность, как бы не так страшно... |
| Автор: nerezus 7.1.2009, 09:24 | ||||||
ksnk,
|
| Автор: ksnk 7.1.2009, 09:47 | ||
Не! не так. Нужно заставить юзера самого разбить свою одну новость на элементарные блоки. Одна новость состоит из нескольких блоков, которые размещаются друг за другом... "Я спросил у Гугеля"..., Как правило, народ долго выспрашивает чем-же чистить от лишних тегов, ему (народу) тычут в http://ru2.php.net/tidy, мол пиши сам... а он, (народ) берет safehtml и предпочитает не парится. |
| Автор: nerezus 7.1.2009, 09:55 |
| ksnk, мы исходим из того, что среднестатистический юзверь не шарит в компьютерных делах. И это факт. Поэтому ему дается WUSIWUG редактор и он творит, что хочет. |
| Автор: ksnk 7.1.2009, 12:24 |
| Ну, интересный такой системе среднестатистический юзер, по крайней мере, не должен пугаться компьютера, Експлорера и Визивиг редактора Не так и сложно объяснить такому среднестатистическому юзеру, что текст новости нужно разбить на логические куски... Ну а если юзер такой непонятливый, он сможет нарыть и скопипастить такой кусок разметки, что никакой safehtml не раберется. Может ну его нафиг такого непонятливого юзера - своеобразный тест на сообразительность Впрочем, народ пока не бежит предлагать замену safehtml'ю, может новый год с рождеством еще справляют? |