WYSIWYG

Есть вопрос для web-специалистов… Вот задумался я об использовании WYSIWYG редактора в паблике. В админке пользуюсь tinymce, тут то понятно, но а если вытащить его в паблик — не будет ли это потенциальная дыра? Тут уж htmlspecialchars не поможет. Может кто задумывался?

27 комментариев

Естественно в паблике должно быть все по минимуму. Ну как и тут:)
В чём может заключаться угроза безопасности?
Ну банально загрузка кода в базу данных.
Я с TMCE практически не знаком, но могу предположить, что вполне возможно использовать только клиентские скрипты, которые на безопасность никак не повлияют. Если редактор даже теоретически позволяет сделать инъекцию, то он на сайте нафиг не нужен.
Да не суть важно именно этот редактор. Просто я в основном с ним работаю. Какие можешь порекомендовать для установки? Нужно только редактирование текста, все остальное в паблике не требуется.
1. Хороший wysiwyg, тем более халявный остается великой мечтой разработчиков. Из бесплатных TinyMce и CKEditor приблизились к идеалу максимально, хотя по-прежнему им не стали.

2. Если вы соблюдаете основы безопасности в серверном код, вас никто не взломает. Wysiwyg тут не причем, для серверного кода не имеет значения каким образом пользователь передал данные, они в любом случае не должны вызывать доверие.
Лучше перестраховаться чем переоценить:) Спасибо за консультацию!
По п.2 уточню — тут проблема не в передаче данных и фильтрации. В некоторых редакторах есть возможность загружать файлы на сервер, чем может воспользоваться злоумышленник.
Ошибаешься,в TinyMCE по умолчанию файловый менеджер не входит, это отдельная платная приблуда и гражданин сразу написал, что ею не пользуется.
Я пользуюсь конечно, но другой приблудой, бесплатной, но только в админке. А для паблика она не нужна. А менеджер это конечно дырка неплохая, там даже пароль можно ставить на ее запуск, то есть даже разработчики это осознавали.
Рекомендовать от балды — неблагодарное занятие. Если ты пользуешься библиотеками вроде Mootools, jQuery и тд, то я бы посоветовал выбирать из готовых плагинов. Если не используешь, то нужно уточнить задачи, которые должен решать WYSIWYG.

Выше совершенно правильно замечено — хороших бесплатных унииверсальных решений мало, возможно, проще будет написать что-то своё.
«проще будет написать что-то своё» — вот с этим поспорю, задачу не назовешь тривиальной.
Если задача состоит в том, чтобы дать возможность менять начертание, кегли и вставлять картинки — то это вряд ли можно назвать сложным. Если потребуется добавлять-редактировать те же таблицы, то соглашусь с нетривиальностью.
Увы, Володь, даже перечисленные задачи требуют времени, опыта и риски. Разработчики визивига для Live-street пошли по легкому пути. Пользователь видит сам html-разметку и как бы сам несет ответственность за результат. А хороший визивиг берет на себя эту проблему. Он отвечает за корректность формируемого кода (не отображая его пользователю), за правильную интерпретацию действий пользователя (а он не всегда предсказуем, есть спорные моменты в которых команда разработчиков должна сама определиться с действием), чистку вставленного куска текста от явно мусора (сколько сайтов с самодельными админками хуярят вордовскую разметку, ничтоже сумняшеся, внутри корректной верстки). Многие разработчики с этой «простой» задачей так и не справились, а там работали зачастую не только школота.
В LiveStreet нет WYSIWYG и не может быть, поскольку весь текст постфактум обрабатывается джевиксом.

О каких действиях идёт речь, которые сложно интерпретировать? Если не пытаться реализовать у себя гугл докс, то больших трудностей здесь не будет. Чистка мусора может быть легко осуществлена на стороне сервера (регулярные выражения в пхп-скрипте) путём отправки-приёма запроса либо на стороне клиента средствами javascript
replace(/<span style="font-weight: bold;?">(.*)</span>/gi,'<b>$1</b>'

Я говорю о простейшем редакторе, который подменяет текстовое поле фреймом, в котором выделенный фрагмент оборачивается тегами <b>, <i> и <a> или просто вставляется картинка. Для этого нужно иметь только минимальные представления о javascript и DOM. Да что там говорить, такую элементарную штуку даже я смогу сделать с моми фактически нулевыми познаниями в этом языке.
Мне кажется ты через чур упрощенно представляешь себе задачу и слегка бравируешь, если речь идет о хорошем визивиге, а не о «как бы работающей» модели, которая к реальному массовому использованию не готова.

Что касается функций чистки, TinyMce вполне сносно справляется с этой задачей без серверной части. Зачем тогда писать свой, если есть реализованный и оттестированный с этим функционалом?

Я не говорил, что задача невыполнимая, я говорил, что для создания действительно стоящего продукта нужно время и опыт. Когда увижу первые 100 строк твоего кода к wysiwyg для kursk.me возможно изменю свое мнение.
На курск.ме нет смысла делать визивиг, поскольку, как я говорил, текст после отправки обрабатывается парсером, что уже ставит под сомнение принцип «что видишь то и получишь».
Значит шансы, что я изменю мнение малы. Я знаю форумы, где ребята готовы за месяц принципиально новую операционку написать, ну не будем же мы до их уровня падать.
Если ты не заметил, я никогда не заявлял здесь о том, в реальности реализации чего не уверен, потому аллюзии к болженосам не считаю уместными. Если в дальнейшем передо мной встанет задача сделать что-то подобное, я обязательно подниму этот пост и покажу тебе результат. Но исключительно ради чьего-то личного убеждения, разумеется, я это делать не стану, поскольку меня не сильно беспокоит, изменится ли твоё мнение или нет.

И как бы там ни было, я продолжу стоять на своём, что примитивный визуальный редактор с функциями, близкими к тому, что мы видим здесь — это задача на считанные часы для программиста средней руки, если не ниже.
Ну что ж, заметано.
  • аватар SeL
  • 0
Одного яваскрипта мало — фильтрация на сервере однозначно нужна, клиент со злым умыслом может отправить не то что выдал яваскрипт.
Это уже выходит за рамки темы «редактор wysiwyg»
  • аватар SeL
  • 0
Потенциальной не будет, но нужно переодически проверять актуальность используемой версии.
Часто при попытке взлома уязвимость ищут не в движке, а одном из его стороних компонент, в том числе и в TinyMCE. Полезный сайт. Ну и для примера, понимаю что уже не текущая версия, но наверняка много где еще используется.
Хоть и очень старая версия, но неприятно. Файл менеджеры не собираюсь использовать — значит меньше проблем:) Спасибо!
Дизайн классный, люблю минимализм, но в меру.

Чтобы оставлять комментарии, нужно или зарегистрироваться.