bb-коды - Дизайн и модификация Invision Power Board

Перейти к содержимому

 

СвернутьПрикрепленные теги

Теги не найдены

Страница 1 из 1
  • Вы не можете создавать новые темы
  • Вы не можете отвечать в этой теме

bb-коды зачи они нам всем?

#1 Пользователь не на сайте   stud ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 82
  • Регистрация: 06-Апрель 12
  • Репутация: 0
  • IPB version:3.3.x
 

Отправлено 20 Сентябрь 2012 - 15:39

Вопрос не относится на прямую к ИПБ, а скорее к логике
Зачем нужны ББ-коды?

Вот есть неплохой редактор: http://ckeditor.com/
Я его сейчас ковыряю. По умолчанию он все вставки через тулбар сразу же представляет в виде хтмл-разметки. Т.е., если я жму на смайлик, то в окне редактора я вижу не :smile: (как на форумах) а саму картинку (а если точнее, то я вижу <img src="ololo.gif">)
И так с любым форматированием. Выделил текст жирным - и тут же в редакторе, без всяких предварительных просмотров, видишь его жирным (на самом деле я вижу что-то типа <span style="text-style: bold">мой набраный текст</span>)

Ведь сами разработчики этого редактора CKEditor пишут:
It's a WYSIWYG editor, which means that the text being edited on it looks as similar as possible to the results users have when publishing it


И этот же редактор устроен так, что все вручную набраные теги он как бы экранирует, т.е. заменят всякие < > / - на соответсвующие хтмл-мнемоники. Т.е. вручну. пользователь не может писать любые хтмл-теги, которые ему вздумается. Точнее может, но они, после публикации, никак не повлияют на хтмл-разметку самой страницы. Они заэкранированы как-бэ.
Ведь это же отличная защита от внедрения своих скриптов на сайт, от калеченья разметки сайта.

И тут разработчики форумов решили, что правильные пацаны так не делают!!! Нужно вместо обычных хтмл-тегов вставлять какую-нибудь фигня, например [ b ] [ / b ] и уже на стороне серваре парсером разбирать всю эту байду (ее назвали бб-кодами) и заменять на обычные хтмл-теги. Внимание, вопрос: ЗАЧЕМ они все это делают, ЗАЧЕМ???
Если для защиты, то, как я писал выше, редактор CKEditor НЕ позволяет писать вручную какие угодно теги! Он их заэкранирует.
0

#2 Пользователь не на сайте   Ritsuka ответил: »

 
 
  • ***
  • Смотреть галерею
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 1 908
  • Регистрация: 08-Июнь 09
  • Репутация: 531
  • IPB version:3.4.x
 

Отправлено 20 Сентябрь 2012 - 16:34

Цитата

Если для защиты, то, как я писал выше, редактор CKEditor НЕ позволяет писать вручную какие угодно теги! Он их заэкранирует.

Бггг. Что, безусловно, помешает мне отключить в браузере JavaScript и понаписать в textarea любого HTML на свой вкус, включая скрипты и стили. Не говоря уже о формировании прямого POST-запроса с ними же. Полагаться в вопросах фильтрации контента на пользовательский JavaScript - прямой путь к взлому ресурса и забивке его посторонними скриптами и мусором.

1. Форумы появились значительно раньше всей этой ВЮСИВЮГни. IPB, например, появился в 2002 году - в год выхода Windows XP. Когда они существовали и развивались, у пользователей не было современных браузеров с повсеместно включенным JavaScript и стабильной поддержкой rte-ввода, и для набора постов был только один вариант - простое текстовое поле. Чтобы позволить форматировать текст, были придуманы BBCode, markdown и wiki-разметки. Чтобы упростить их применение, были придуманы панели с кнопками форматирования.

2. Эти три вида разметки позволяют 100% гарантировать, что пользователь сможет воспользоваться только теми видами html-конструкций, которые предусмотрел создатель ресурса, и ничего более. При этом разработчик сам выбирает, какие параметры и какое содержимое тегов может редактировать посетитель, а какие - нет. Так же с помощью данных разметок можно удобно реализовать сложные функции, вроде создания автоматического оглавления, боковых блоков, органичения прав доступа к контенту и т.д. Никакой визуальный HTML-редактор не позволит вам оформить всю википедию так аккуратно, как она оформлена с помощью викиразметки. Это вопросы надежности, аккуратности, удобства и безопасности.

3. С тех пор, как визуальные редакторы значительно развились, некоторые скрипты и ресурсы пробуют использовать чистый html для редактирования, написания, хранения и отображения пользовательских постов. Например, drupal последних версий по-умолчанию использует html-ввод и фильтрацию тегов в нем. Многие мало популярные CMS так же используют html. Но html - это всегда вопрос парсинга пользовательского ввода:
а) Практически невозможно создать такой парсер html, чтобы убирал все лишнее и опасное из html, быстро работал и при этом не портил разметку текста. И "CKEditor экранирует же" - не аргумент, когда мы говорим о ресурсе, доступ куда не ограничен строго домохозяками и далекими от IT людьми. Ярчайший пример - habrahabr.ru. У них используется html-ввод, и сайт несколько раз был взломан через обход фильтра html с внедрением JS, а в каждом 10-м комментарии поломаны ссылки или разметка и стоит примечание "парсер - лох".
б) Вторая проблема html - проблемы с кастомным функционалом. Если с bbcode все понятно - расширяем словарь кастомных тегов - и готово, то как добавить кастомный элемент в html-редакторе? Как должен выглядеть и отображаться в визуальном редакторе, например, блок для геренации автооглавления? Или для аттача? HTML-элемента для него нет, он сам превращается в кучу html-элементов уже на этапе отрисовки. Сделать какой-то "{%[list]%}"? Ну и о каком нативном html-вводе мы тогда говорим, если все равно придется учить теги и парсить коды постов на предмет этих тегов? Где упрощение-то? Наоборот, кроме как добавления лишней головной боли с фильтрацией, никаких серьезных изменений в обработке данных не получается: все равно придется искать и парсить словарик тегов и при вводе, и при отрисовке.

Теоретически, начав переход на CKEditor, IPS может пойти дальше, и перевести ввод и хранение тоже в HTML, но зачем?
а) Этот шаг гарантированно не встретит радостного отклика в массах, т.к. это будет означать смерть важной составляющей форума - мощного и привычного функционала кастомных настраиваемых тегов.
б) Этот шаг не принесет никакой практической пользы - уже сейчас есть визуальный редактор, который конвертирует html + bbcode <> bbcode "на лету", что позволяет сочетать безопасность и расширяемость bbcode с удобством WYSIWYG.

Да, это сложнее, чем просто HTML, но программистам не впервой писать что-то более сложное, чтобы создавать удобный и практичный функционал. Это только двоечники и далекие от IT люди говорят "зачем заморачиваться, и так сойдет", и вкручивают простой html-ввод и хранение, а потом городят велосипеды для доп.функицонала и мучаются с дырами. Любой грамотный специалист смотрит куда глубже, и если взять всю систему в совокупности, то BBCode с опциональным WYSIWG вводом значительно превосходит HTML.

P.S. И, кстати, я, например, никогда не пользуюсь визуальным редактором и везде его отключаю, т.к. мне удобнее, проще и быстрее писать коды без этой ВЮСИВЮГуйни, и результат получается чистым и ожидаемым. Никакой ВЮСИВЮГ такого не даст.
0

#3 Пользователь не на сайте   stud ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 82
  • Регистрация: 06-Апрель 12
  • Репутация: 0
  • IPB version:3.3.x
 

Отправлено 20 Сентябрь 2012 - 18:08

Ок, вам не нравится CKEditor (вполне обосновано, как я понял).

Цитата

Бггг. Что, безусловно, помешает мне отключить в браузере JavaScript

Точно, совсем забыл про это)

1)

Цитата

Так же с помощью данных разметок можно удобно реализовать сложные функции, вроде создания автоматического оглавления, боковых блоков, органичения прав доступа к контенту

Что такое автоматическое оглавление?:) Может я с ним и сталкивался, но не знал, что это "автоматическое оглавление")

органичения прав доступа к контенту - даже не представляю как это делают средствами бб-тегов и вики-разметки)

2)

Цитата

Практически невозможно создать такой парсер html, чтобы убирал все лишнее и опасное из html, быстро работал и при этом не портил разметку текста

Ок, поверю вам на слово. Но как ВЮСИВЮГ может портить разметку? Вы имеете ввиду то, что он добавляет инлайновые стили (инлайновые стили - это не комильфо) в свои хтмл-теги?
И сразу же вопрос. Получается, на стороне сервера бб-парсер должен экранировать ВСЕ пришедшие от пользователя хтмл теги (может что-то еще?), так ведь? Такой подход может на 100% гарантировать защиту от такого типа взлома?

3)Получается, ребята из ИПБ переписали работу (не полностью конечно) всех (почти всех) стандартных кнопок в CKEditor?

4)

Цитата

Это только двоечники и далекие от IT люди говорят "зачем заморачиваться, и так сойдет"

Я такого не говорил:)

5)

Цитата

уже сейчас есть визуальный редактор, который конвертирует html + bbcode <> bbcode "на лету", что позволяет сочетать безопасность и расширяемость bbcode с удобством WYSIWYG

Посоветуйте мне для изучения этот крутой редактор, про который вы пишете)

Сообщение изменено: stud (20 Сентябрь 2012 - 18:09)

0

#4 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 720
  • Регистрация: 20-Март 09
  • Репутация: 2 269
  • IPB version:3.1.x
 

Отправлено 20 Сентябрь 2012 - 18:33

Просмотреть сообщениеstud сказал(а):

Получается, на стороне сервера бб-парсер должен экранировать ВСЕ пришедшие от пользователя хтмл теги (может что-то еще?), так ведь? Такой подход может на 100% гарантировать защиту от такого типа взлома?

Да. htmlspecialchar'сить хтмл символы в сущности, и распарсить ббкоды. В принципе может защитить на 99,9%, но тут встают ббкод'ы, через которые иногда просачивается нечисть (недостаточная их фильтрация)

stud, вы сейчас конкретно лолите. Вы бы почитали сначала что такое ббкоды. Потом вспомнили что JS это клиентский язык. А первое правило гласит - никогда не доверяй данным поступающим от клиента, каким бы образом на его стороне они небыли обработаны. Вам, вроде как человеку с наклонностями программиста это должно быть известно как никому другому.
0

#5 Пользователь не на сайте   stud ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 82
  • Регистрация: 06-Апрель 12
  • Репутация: 0
  • IPB version:3.3.x
 

Отправлено 20 Сентябрь 2012 - 18:56

Цитата

stud, вы сейчас конкретно лолите

Если вы про
р: "Бггг. Что, безусловно, помешает мне отключить в браузере JavaScript"
с: "Точно, совсем забыл про это"
Да, согласен:)
А то, что JS - это клиентский язык, я помню)
0

#6 Пользователь не на сайте   Ritsuka ответил: »

 
 
  • ***
  • Смотреть галерею
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 1 908
  • Регистрация: 08-Июнь 09
  • Репутация: 531
  • IPB version:3.4.x
 

Отправлено 20 Сентябрь 2012 - 21:18

Цитата

Получается, ребята из ИПБ переписали работу (не полностью конечно) всех (почти всех) стандартных кнопок в CKEditor?

Ребята из IPS написали промежуточный парсер, который получает html и конвертирует его BBCode, и, да, таки вмешались во многие "кнопки". То, что приводится к стандартным BBCode - остается. Все остальное экранируется.

Цитата

Что такое автоматическое оглавление

Один из wiki-тегов.

Цитата

органичения прав доступа к контенту

Про широко известный в узких кругах тег [hide] никогда не слышали?

Цитата

Посоветуйте мне для изучения этот крутой редактор, про который вы пишете

Он у вас перед глазами, в вашем 3.3.х дистрибутиве. Созданный в CKEditor HTML перед записью в базу транслируется в BBCode.

Если вас интересует вариант именно на JS, чтобы преобразование шло в браузере, то вот, например: http://www.wysibb.com/

Цитата

Но как ВЮСИВЮГ может портить разметку?

Начнем с того, что пустой документ в textarea имеет код:


А пустой документ в CKEditor имеет код:
<p>
	&nbsp;</p>


Дальше объяснять?
0

Сообщить об этой теме:


Страница 1 из 1
  • Вы не можете создавать новые темы
  • Вы не можете отвечать в этой теме

1 пользователей читают эту тему
0 зарегистрированных, 1 гостей, 0 скрытых


Контактная информация

Вопросы по работе сайта

+7 (917) 501-4765
C 10 до 20 в рабочие дни (время московское)

Техническая поддержка

Контактные данные специалистов

Дизайн форумов

IPB 3.x ¦ IPB 2.x

Бесплатные шаблоны

IPB 3.2 – 3.4 ¦ IPB 3.1 ¦ IPB 3.0 ¦ IPB 2.2 – 2.3 ¦ IPB 2.1 ¦ Клипарт
Лицензия на использование ¦ Ваша поддержка ¦ О проекте
Copyright © 2005-2016 IPBSkins.ru Team
При копировании материалов с сайта
прямая ссылка на источник обязательна