Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Реализация создания/редактирования контента, редактор кода, хранение контента 
:(
    Опции темы
Innuendo108
Дата 8.7.2011, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 143
Регистрация: 3.4.2008

Репутация: нет
Всего: 2



Стоит задача дать возможность пользователям сами создавать/редактировать контент на сайте (статьи, новости и т.д.)


Сначала была простая идея - сделать простейший редактор составления контента (к примеру BB-код), хранить контент в базе в этом самом BB-коде, а при отображении - парсить в HTML.

Но возникло требование - дать пользователям wysiwyg редактор (контингент пользователей - люди, далекие от компьютеров, сложнее MS Word'а ничего не видали).


Вот и вопрос - как грамотно и безопасно это реализовать?

Пользователь в wysiwyg-редактор сразу видит форматированный текст, но "выход" редактора это HTML-код. Пусть на панельке редакторе я выставлю только те кнопки, что мне нужно (конкретные цвета, конкретные шрифты, запрет на изображения и т.д.), но злоумышленник сможет вбить туда любой html-код через firebug.
Как проверять содержимое контента при сохранении тогда? Нужно иметь фильтр разрешенных html-тегов, как-то так? И если я буду хранить контент в базе в html-виде, то отображать надо будет простым "echo" (без защит типа htmlspecialcharacters) - т.е. если злоумышленнику удасться внедрить "плохой" html, то оно отобразится.

Посоветуйте варианты - как хранить контент, и как на обоих стадиях фильтровать (на стадии сохранения, и на стадии отображения).


P.S. Это вопрос не по php конкретно, но общего раздела web-разработки нет. Я посчитал что ближе это всё-таки к серверной части, а так как меня интересует php-реализация, то постю сюда.

Заранее спасибо за ответы.
PM MAIL   Вверх
Guedda
Дата 8.7.2011, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 13
Всего: 78



Один из вариантов - парсить текст перед сохранением на разрешенные теги.

Добавлено через 34 секунды
Да и как с помощью HTML что-то злостное написать?


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
mark2011
Дата 8.7.2011, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 28.6.2011

Репутация: 2
Всего: 2



Innuendo108
У меня написана система создания и редактирования страниц с использованием редактора WYSIWYG. Если вы беспокоитесь только за то, что в финальном html могут попасть запрещённые теги html, используйте функцию php strip_tags со вторым параметром. Напомню её соответствующее определение:

Код

string strip_tags ( string $str [, string $allowable_tags ] )


Указав в качестве второго параметра те теги, которые необходимо оставить в тексте, вы достигнете своей цели.

Как хранить? В базе, обыкновенно. Фильтровать перед помещением в базу. 
PM WWW ICQ Skype   Вверх
Innuendo108
Дата 8.7.2011, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 143
Регистрация: 3.4.2008

Репутация: нет
Всего: 2



Guedda
ну как запрещенного.... ну если не учитывать внедрения <script> тегов, то вообще цель - запретить использовать нестандартное форматирование контента. (Вот есть стандарт - 3 цвета, 2 шрифта, 3 размера и 1 изображение) и всё - ничего другого нельзя.


mark2011
Спасибо за подсказку интересной функции - strip_tags , не знал, то что нужно. А как можно атрибуты в тегах запрещать?

Это сообщение отредактировал(а) Innuendo108 - 8.7.2011, 19:59
PM MAIL   Вверх
mark2011
Дата 8.7.2011, 22:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 28.6.2011

Репутация: 2
Всего: 2



Innuendo108
А зачем вам запрещать атрибуты? Если тег запрещён, то он запрещён, тут никакие атрибуты не будут действовать. Если тег разрешён, значит разрешены любые его атрибуты. Если уж так нужно, попробуйте поиграться с регулярками в php на эту тему, но имхо кода больше будет, чем реальной пользы )))
PM WWW ICQ Skype   Вверх
Innuendo108
Дата 9.7.2011, 08:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 143
Регистрация: 3.4.2008

Репутация: нет
Всего: 2



mark2011

Просто чего я могу добиться запретом одних тегов? Да, <script>, <iframe> теги запрещу, запрещу картинки. Но css же всемогуч - пользователь сможет что угодно написать в атрибуте style, и я получу любое форматирование а так же и картинку (которые, к примеру, запрещены). Главное что через css можно делать аболютные дивы, которые будут налазить на шапку сайта, или подменять меню сайта и т.д. и т.п. Вообще страшная вещь =)

При том, wysiwyg редактор (я долго выбирал, не помню на каком я сейчас остановился) возможно как раз через style атрибут и задаёт стиль всем элементам. И как тогда быть с атрибутом style? Регуляркой обходить и блочить всякие position:absolute, background[-image] : url() и т.д.
PM MAIL   Вверх
ivashka
Дата 10.7.2011, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 6.6.2006

Репутация: нет
Всего: нет



Да действительно если уж сильно беспокоится, то надо и некоторые возможности css обрезать.
Но главное это отрубить ява-скрипты.

Я перепробовал целую кучу визуальных редакторов, но самый удобный и для пользователя и для разработчика TinyMce, для него еще есть отличный менеджер файлов.
PM MAIL   Вверх
mark2011
Дата 10.7.2011, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 28.6.2011

Репутация: 2
Всего: 2



Innuendo108
А собственно что? CSS - это 
Код

<link rel="stylesheet" href="file.css">


и

Код

<style type="text/css">
</style>


Ну так запретите эти теги при помощи упомянутой выше функции strip_tags и всё как бы.... т.е. ситуация такая, вы парсите текст из редактора, если находятся эти теги, то они обрежутся. Ну что ж, если пользователь там что-то написал из CSS, то оно будет бесполезно. По крайней мере не выполнится - это уж точно smile
PM WWW ICQ Skype   Вверх
systemIV
Дата 10.7.2011, 20:32 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 28.3.2011

Репутация: -1
Всего: -1



Не знаю писали или нет, не читал. Напиши функцию которая заменяет символы <, >, /, ? и т.д. на их численные коды.
PM ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0727 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.