Исследование. Особенности парсинга сообщений в html-кодах и в bb-кодах

undefined

Новичок
Потому что XML не осилили.

Впрочем, может быть что-то изменилось за годы. Можно сейчас по-быстрому одеть xml в xsl инлайн? Ну, в смысле через аякс или типа того?

ЗЫ Я сужу как пользователь с одной стороны. Некоторое время назад повсюду торчали тогда модные фиды и вроде как все обещало перспективу. Однако фиды постепенно исчезли, их место заняли иконки социала. Цукеру не надо XML, ну и нам подавно.

Как девелоп в тот самый период я сделал сайт на xml-xsl-php но это стоило чудовищных мучений. Сейчас как-то применяется кроме снабжения флэша?
 

doran7

Новичок
hell0w0rd написал(а):
А чем bb-коды защищают больше, чем чистый html?
Они защищают, от тех же XSS, с меньшими издержками на процедуры защиты, чем html. Если мы получаем от юзера на сервер пост с разметкой в bb, то делаются две вещи.

1. Полученный пост юзера (а это строковая переменная) пропускаем через strip_tags() - это самый простой и эффективный способ фильтрации при таком подходе.
2. После strip_tags() этот пост юзера пропускаем через парсер (bb в html), и получаем чистый отфильтрованный HTML, хоторый можно и в БД хранить, и выводить по запросам юзеров на просмотр.

Если же мы получаем от юзера на сервер пост с разметкой в html, то делается одна вещь, но довольно тяжелая. А именно, делается фильтрация html с помощью разных довольно мощных и навороченных фильтров (Purifier, htmLawed, Tidy и пр.). Вот эта самая фильтрация, по издержкам для сервера и скриптов PHP, ее производящих, значительно более затратна, чем первые две процедуры, изложенные выше (для случая с bb).

Единственный смысл bb-кодов, имхо, в том что они позволяют снизить издержки на организацию защиты от XSS и прочих атак. Ну и еще, может, юзеру проще выучить разметку текста в bb-тегах, чем в html-тегах. Но это, наверное, не главная причина.
 

undefined

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

doran7

Новичок
undefined написал(а):
Нормальный юзер будет нажимать кнопки, вот и все обучение. Даже тут они есть, хотя в редакторе ничего не парсится.
В редакторе и не должно парситься, если это js-редактор на клиенте. В нем только простая валидация может проводиться, чтобы отсеять явные ошибки юзера. Фильтрация и парсинг проводятся на сервере, т.к. тому что пришло от клиента веры нет. При этом какой редактор - визивиг/невизивиг - непринципиально. Принципиально, если это визивиг - это визивиг для разметки текста в bb-тегах или в html-тегах.
 

undefined

Новичок
Поэтому применительно к юзеру и обсуждать нечего. Не будет он ничего изучать и запоминать. Однако текст можно послать и без всяких там редакторов с визифигами. В защиту от чего и придумана квази-разметка ДО.

Я просто пытаюсь объяснить что природу не *****шь. Не хотели парсить XML - будем парсить BBC. С трудом верится что это легче.
 

hell0w0rd

Продвинутый новичок
doran7
А в чем проблема использовать второй параметр strip_tags?
 

stopkran

Дилетант
А в чем проблема использовать второй параметр strip_tags?
Проблема возникает на более низком уровне - атрибутов (а не тэгов). Например, тэг TD нужно обязательно оставить, это да. Но атрибут onclick у него - явно лишний. А вот атрибут rowspan - опять нужно оставить.
 

doran7

Новичок
hell0w0rd написал(а):
doran7, А в чем проблема использовать второй параметр strip_tags?
Да нет проблемы. Просто пока не понимаю для чего оставлять какие-то теги в html, если изначально сообщение создается с разметкой текста в bb. Был не прав. Есть проблема. Если постим с bb-разметкой, то все должно быть в bb, никаких html-тегов оставлять нельзя. Если есть необходимость в таком теге - значит надо делать дополнительный аналог тега в bb.

Замечание. Спорить о наборе bb-тегов бесполезно, у каждого будет свой набор, для своих целей. Как правило этот набор ограничен по сравнению с максимально полными известными набороми bb-тегов. От набора bb-тегов зависит сложность парсера, поэтому кто-то будет делать широкий набор, кто-то наоборот, сокращенный. У каждого свои задачи и цели.
 

hell0w0rd

Продвинутый новичок
Да нет проблемы. Просто пока не понимаю для чего оставлять какие-то теги в html, если изначально сообщение создается с разметкой текста в bb.
ну вот я хочу написать <p>привет</p>, тут меня никто не вырежет, а вы вырежете
 

doran7

Новичок
hell0w0rd написал(а):
ну вот я хочу написать <p>привет</p>, тут меня никто не вырежет, а вы вырежете
В форме ввода это будет выглядеть так

ну вот я хочу написать
привет
тут меня никто не вырежет,

И такой текст вообще не надо в форме ввода размечать какими-либо тегами. Он уже размечен LF в Линуксе или CRLF в винде. Для этого есть nl2br, которая расставит свои </br> после каждого LF сразу после парсинга bb в html. Если не нравится </br>, а нравится <p>, то их тоже можно расставить простой регуляркой привязав к LF. Только заменять LF не надо - пригодятся.
 

ksnk

прохожий
hell0w0rd тут как раз вырезали ;) Это теперь не параграф, а html последовательность. Хотя, это довод к тому, что использовать strip_tags при приеме сообщения юзера нужно осмысленно.
 

hell0w0rd

Продвинутый новичок
ksnk
Никто ничего не вырезал. Было использовано экранирование, а я к этому и вел
 
Сверху