Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Исследование. Особенности парсинга сообщений в html-кодах и в bb-кодах [2]

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): « 1 [2]   

> Описание: Сбор информации, обсуждение и подготовка обзорной статьи о парсинге сообщений в html-кодах и в bb-кодах
sadex
Отправлено: 12 Июля, 2013 - 17:11:56
Post Id


Новичок


Покинул форум
Сообщений всего: 48
Дата рег-ции: Июнь 2013  


Помог: 1 раз(а)




DeepVarvar, благодарю за интерес к теме. Решение рабочее, но какое-то оно ... не очень красивое.

Пока надумал вот что.

1. Админ. Сообщения (статьи, новости и т.д.), создаваемые админом (в админке), создаются html-резметке. Простая валидация (контроль ошибок) на клиенте, с реализацией предпросмотра в html. Фильтрация html на сервере (защита от XSS и др. атак). Далее, запись и хранение в БД в html. Редактирование в html (простой редактор html-разметки). Вывод и показ сообщения - в html без парсинга. Узкое место - фильтрация html на сервере, но поскольку это сообщение от админа из админки, то фильтр можно делать простой, не слишком мощный.

2. Пользователь. Сообщения (комментарии и т.д.), создаваемые пользователем, создаются в bb-кодах разметки текста. Простая валидация (контроль ошибок) на клиенте, с реализацией предпросмотра в html (для этого есть простой парсер на JS из bb в html). Далее, на сервере, парсинг из bb в html, запись и хранение в БД в html. Редактирование пользователем - обратный парсинг из html в bb (на сервере или на клиенте - еще не понял, где лучше), редактирование в bb, дальше повторение дейстивий при создании сообщения. Вывод и показ сообщения - в html без парсинга. Узкое и неоптимальное место - редактирование. Но поскольку для юзеов (только для превилигированных) это будет довольно редкой процедурой (по сравнению с просмотром) - то это допустимо.

При описанном выше решении достигается главная цель - при просмотре сообщений (по запросу от любого посетителя сайта) они достаются из БД и выводятся в браузер без парсинга bb в html, т.е. быстро и с минимальной нагрузкой на сервер. А поскольку просмотр - это наиболее частая процедура, то такое решение, имхо, довольно оптимальное и привлекательное.

Критика, продуктивная, приветствуется. Заранее благодарен всем участвующим в обсуждении за интерес к теме.
 
 Top
vanicon
Отправлено: 12 Июля, 2013 - 17:15:41
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


Помог: 17 раз(а)




sadex, чем вариант DeepVarvar'a не угодил?


-----
Так было, так есть и так будет
 
 Top
DeepVarvar Супермодератор
Отправлено: 12 Июля, 2013 - 17:40:01
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




vanicon пишет:
чем вариант DeepVarvar'a не угодил?
Он хочет дать админу возможность делать хтмл сразу, а до такого (нативный код):
PHP:
скопировать код в буфер обмена
  1. if (!$member->isAllowPureHtml()) {
  2.   $message = htmlspecialchars($message);
  3. }

додуматься сложно..
 
 Top
sadex
Отправлено: 12 Июля, 2013 - 18:18:45
Post Id


Новичок


Покинул форум
Сообщений всего: 48
Дата рег-ции: Июнь 2013  


Помог: 1 раз(а)




vanicon пишет:
sadex, чем вариант DeepVarvar'a не угодил?
Не угодил тем, что в БД надо хранить и bb и html разметку текста сообщения. Мне больше нравится, пока, хранить только html разметку, а из bb и в bb преобразовывать при создании и редактировании сообщения юзером.

DeepVarvar, isAllowPureHtml - надо будет посмотреть, что такое, спасибо за наводку. Насчет htmlspecialchars - один из вариантов фильтрации html, но не единственный. И надо учитывать, что фильтрация сообщений от админа, созданных в html, может быть намного проще аналогичных от юзера.

PS. Еще один сугубо индивидуальный существенный момент. Хочу попробовать прокатать на практике, в относительно длительный период времени, в боевом режиме, два разных подхода - создание и редактирование текстов в bb-разметке и в html-разметке с хранением текстов в БД только в html-разметке. Хочу прочувствовать все удобства и издержки каждого из подходов.

(Отредактировано автором: 12 Июля, 2013 - 18:31:37)

 
 Top
DeepVarvar Супермодератор
Отправлено: 12 Июля, 2013 - 21:48:05
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




sadex пишет:
isAllowPureHtml - надо будет посмотреть, что такое, спасибо за наводку
Это абстрактный конь в вакууме, он не существует, а все вокруг - матрица..
sadex пишет:
Хочу прочувствовать все удобства и издержки каждого из подходов.
Зря потратите время..
 
 Top
sadex
Отправлено: 13 Июля, 2013 - 06:23:09
Post Id


Новичок


Покинул форум
Сообщений всего: 48
Дата рег-ции: Июнь 2013  


Помог: 1 раз(а)




DeepVarvar пишет:
Это абстрактный конь в вакууме, он не существует
Это точно... поиск в гугле этого коня дал в выдаче ноль. Ну, тогда мысль понятна - проверить, разрешены ли юзеру простые html-теги разметки текста и если нет - прогнать сообщение через htmlspecialchars. В моем случае юзер постит с разметкой в bb, и проще, перед парсингом, прогнать его сообщение через strip_tags.
Что касается сообщений от админа, то если в них нет кода (js, php и т.д.) то htmlspecialchars не нужен. Вот если есть код, то тогда через htmlspecialchars прогоняется только подстрока, содержащая код, для ее отображения в браузере.

DeepVarvar пишет:
Зря потратите время..
Ну почему же... Защита от XSS и прочих атак через bbCode - это один подход, а неприменение bbCode и качественная фильтрация html - это другой подход. И то и другое применяется в сайтостроении, и у каждого подхода свои особенности.

(Отредактировано автором: 13 Июля, 2013 - 06:35:28)

 
 Top
Страниц (2): « 1 [2]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Хранение данных, их вывод и обработка »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB