[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: BB-теги (правильная обработка)
Гость777
Привет! Объясните, пожалуйста, как правильно обрабатывать (фильтровать) все bb-теги, чем они опасны



Спустя 4 часа, 54 минуты, 41 секунда (1.11.2010 - 03:12) vital написал(а):
Дык а что там филтровать? Находите preg_replacom все нужные вам и меняте на соответствующую хтмлку.
в духе
preg_replace('[b ]','<b>',$text);
preg_replace('[/b]','</b>',$text);


и т.п.

Спустя 1 минута, 22 секунды (1.11.2010 - 03:13) vital написал(а):
Черт, админы, не парсите ббкод в теге кода=)

Спустя 34 минуты, 9 секунд (1.11.2010 - 03:47) twin написал(а):

Спустя 6 часов, 42 минуты, 6 секунд (1.11.2010 - 10:29) Guest написал(а):
спасибо за все! но тока где найти все bb-коды, который нуждаются в замене?

Спустя 8 минут, 45 секунд (1.11.2010 - 10:38) twin написал(а):
А зачем искать... Сам пиши какие надо.

Спустя 1 минута, 40 секунд (1.11.2010 - 10:40) Guest написал(а):
я просто не знаю, какие опасные, какие надо заменять) подскажите, пожалуйста. например, какие вы заменяете, когда пишете код для textarea

Спустя 4 минуты, 13 секунд (1.11.2010 - 10:44) twin написал(а):
Не понял Какой код для textarea

Спустя 5 минут (1.11.2010 - 10:49) Guest написал(а):
допустим, есть

<textarea cols="10" rows="5"></textarea>


какие bb-теги вы бы заменили здесь?

Спустя 43 минуты, 28 секунд (1.11.2010 - 11:33) Белый Тигр написал(а):
Не нужно путать HTML-теги с bb-кодами. Это совершенно разные вещи.

По теме: По своему опыту могу сказать что опасными являются те BB-коды, которые помещают данные пользователя в какие-либо свойства html-тегов. Например [img]. В большинстве случаев текст типа
Цитата
[ img]http://host.ru/1.jpg[ /img]

превратится в
Цитата
<img src="http://host.ru/1.jpg" />

То есть тут адрес, принятый от пользователя, попал в свойство HTML-тега. Подробно всю суть объяснять не буду, это очень долго. Скажу в кратце. Если регулярные выражения, которые обрабатывают такие bb-коды построены неверно, то есть шанс того, что пользователь может засунуть свойства одних тегов в другие, тем самым нарушив целостность итоговых html-кодов. У многих движков были такие проблемы - e107, phpBB, IPB и т.д.
Там при определённом сообщении можно было получить код типа
Цитата
<img src="http://hos<a href="http://host1.ru/1.html">t.ru/1.jpg" />wegwg</a>

И вот так, аккуратно подбирая содержимое bb-кодов, можно было добавлять в теги дополнительные обработчики событий с произвольным Js-кодом. Например, вписать img-тегу обработчик onload/onerror с кодом кражи авторизационных данных.
Решаются такие проблемы просто. Нужно не полениться, и составить для всех bb-кодов крайне точные регулярные выражения. То есть, если например выражение обрабатывает тот же [img], то оно должно его обработать только в том случае, когда внутри него находится URL, а не что-то ещё. Многие разработчики ленятся это делать, и составляют выражения типа
Цитата
[ img](.*)[ /img]

отсюда и проблемы.



Спустя 12 минут, 31 секунда (1.11.2010 - 11:45) Guest написал(а):
а ты можешь подсказать, как их составить?

Спустя 7 минут, 3 секунды (1.11.2010 - 11:52) DedMorozzz написал(а):
поиск -> Конкурс ББ-декодер.

Спустя 13 минут, 20 секунд (1.11.2010 - 12:05) Guest написал(а):
не нашел

Спустя 6 минут, 44 секунды (1.11.2010 - 12:12) twin написал(а):
Я давал ссылку... Не понравилось, тут смотри. smile.gif

Спустя 54 минуты, 59 секунд (1.11.2010 - 13:07) Белый Тигр написал(а):
Цитата (Guest @ 1.11.2010 - 08:45)
а ты можешь подсказать, как их составить?

Цитата
То есть, если например выражение обрабатывает тот же [img], то оно должно его обработать только в том случае, когда внутри него находится URL, а не что-то ещё.

Ну и с другими соответственно. Парсишь код [url] - ищи в нём именно ссылку. [color] - именно обозначение цвета и т.д.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.