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
Форумы портала PHP.SU :: Версия для печати :: Исследование. Особенности парсинга сообщений в html-кодах и в bb-кодах [2]
Форумы портала PHP.SU » » Хранение данных, их вывод и обработка » Исследование. Особенности парсинга сообщений в html-кодах и в bb-кодах

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

16. sadex - 12 Июля, 2013 - 17:11:56 - перейти к сообщению
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, т.е. быстро и с минимальной нагрузкой на сервер. А поскольку просмотр - это наиболее частая процедура, то такое решение, имхо, довольно оптимальное и привлекательное.

Критика, продуктивная, приветствуется. Заранее благодарен всем участвующим в обсуждении за интерес к теме.
17. vanicon - 12 Июля, 2013 - 17:15:41 - перейти к сообщению
sadex, чем вариант DeepVarvar'a не угодил?
18. DeepVarvar - 12 Июля, 2013 - 17:40:01 - перейти к сообщению
vanicon пишет:
чем вариант DeepVarvar'a не угодил?
Он хочет дать админу возможность делать хтмл сразу, а до такого (нативный код):
PHP:
скопировать код в буфер обмена
  1. if (!$member->isAllowPureHtml()) {
  2.   $message = htmlspecialchars($message);
  3. }

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

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

PS. Еще один сугубо индивидуальный существенный момент. Хочу попробовать прокатать на практике, в относительно длительный период времени, в боевом режиме, два разных подхода - создание и редактирование текстов в bb-разметке и в html-разметке с хранением текстов в БД только в html-разметке. Хочу прочувствовать все удобства и издержки каждого из подходов.
20. DeepVarvar - 12 Июля, 2013 - 21:48:05 - перейти к сообщению
sadex пишет:
isAllowPureHtml - надо будет посмотреть, что такое, спасибо за наводку
Это абстрактный конь в вакууме, он не существует, а все вокруг - матрица..
sadex пишет:
Хочу прочувствовать все удобства и издержки каждого из подходов.
Зря потратите время..
21. sadex - 13 Июля, 2013 - 06:23:09 - перейти к сообщению
DeepVarvar пишет:
Это абстрактный конь в вакууме, он не существует
Это точно... поиск в гугле этого коня дал в выдаче ноль. Ну, тогда мысль понятна - проверить, разрешены ли юзеру простые html-теги разметки текста и если нет - прогнать сообщение через htmlspecialchars. В моем случае юзер постит с разметкой в bb, и проще, перед парсингом, прогнать его сообщение через strip_tags.
Что касается сообщений от админа, то если в них нет кода (js, php и т.д.) то htmlspecialchars не нужен. Вот если есть код, то тогда через htmlspecialchars прогоняется только подстрока, содержащая код, для ее отображения в браузере.

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

 

Powered by ExBB FM 1.0 RC1