Баги парсера BB-кодов XenForo

akaluth

Проверенные
Сообщения
8
Реакции
6
Баллы
5,500
Весьма весело и познавательно читать куски своей статьи на неизвестном мне ранее форуме (особенно, учитывая отсутствия каких-либо отсылок к первоисточнику).

Собственно, ниже представлена моя оригинальная статья на эту тему с описанием как принципов так и причин такого поведения:

1. Методы обхода ограничений на определенные теги/количество этих тегов:
Вставка картинок:


Способ 1



Способ 2


Код:
[img]ссылка на картинку[/img]
Способ 3

Первые два способа чуть сложнее, но с ними можно добится весьма интересных результатов.

2. Как же так получилось?

Вся суть в порядке обработки тегов парсером xenforo. Этот порядок примерно такой:
  1. Подсчет тегов img, url, email
  2. Сверка с пермишеннами количества тегов img, url и email, в случае ошибки - дальнейшие шаги не производятся
  3. Удаление запрещенных тегов (тегов, которые не должны быть отрендерены, например размер шрифта)
  4. Рендер BB в HTML
Оба метода заключаются в том, что ведется подсчет не отрендеренных тегов, а подсчитанных. Различия методов 1/2 и 3:

Метод 1/2 основан на том, что при помощи тегов media и font я ломаю тег img и при подсчете парсер его игнорирует. А так как он не был подсчитан на первом шаге, он спокойно рендерится на четвертом.

Теперь о методе 3:

Его суть в том, что при удалении тега code на третьем шаге, его контент остается неизменным. Решением проблемы здесь будет являться исключение этого тега из списка запрещенных, каких-то проблем для подписи он не вызывает.

3. Хорошо, но как же это пофиксить?

Я не очень силен в PHP, поэтому опишу текстом, плюс приложу фикс на jQuery:
  1. Метод номер раз: обеспечить подсчет тегов img, url и email непосредственно во время их рендеринга
  2. Через CSS ограничить вывод картинок в подписях, но код может быть монструозен ввиду того, что bb-коды могут быть вложенными
  3. Через jQuery просто удалять все картинки и iframe из подписи, вот мой фикс для этого:
От себя добавлю, что вполне эффективен метод #3, ибо картинки удаляются до того, как будут загружены. Впихнуть его нужно глобально на все страницы форума, ну и ждем фиксов от xenforo’вцев.
Уверен, что на этом форуме есть люди, которые могут связаться с разработчиком движка и донести до него эту проблему. Текущий статус фикса лично мне неизвестен (статья, напомню, написана 29 июля), но гарантированно работает на движках до 1.2.0 включительно.

(он же мой блог)

Если будет интересно, могу рассказать еще о нескольких интересных багах, найденных мною :-)

UPD: Судя по тому, что оно всё еще работает на официальном форуме ксенфоро, баг до сих пор актуален
 
Последнее редактирование:
UPD2: Пишу сообщение разработчикам xenforo
 
Обход лимитов на количество изображений/ссылок в подписи, обход ограничений на опеределенные теги в подписи (например, видео через media).
я думал уже обход хайдов таким способ!
 
Не сюда пишите, а в багтрекер.
 
Не сюда пишите, а в багтрекер.
Как только закончу перевод на английский - первым делом.

Перевел на англ. и отписал на офф. форум xenforo, жду ответа.

Баг будет исправлен в следующем релизе
 
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу