siv1987 2628 11/22/14 20:29 Так что там с xxs то, есть или нет? Поделиться сообщением Ссылка на сообщение
asterix_kpi 1 12/04/14 00:04 на версии 3.4.7 есть bb-code<?xml version="1.0" encoding="utf-8"?> <bbcodeexport> <bbcodegroup> <bbcode> <bbcode_id>51</bbcode_id> <bbcode_title>foto</bbcode_title> <bbcode_desc/> <bbcode_tag>foto</bbcode_tag> <bbcode_replace><![CDATA[<img src="{content}" width="200">]]></bbcode_replace> <bbcode_useoption>0</bbcode_useoption> <bbcode_example><![CDATA[[foto]{content}[/foto]]]></bbcode_example> <bbcode_switch_option>0</bbcode_switch_option> <bbcode_menu_option_text/> <bbcode_menu_content_text/> <bbcode_single_tag>0</bbcode_single_tag> <bbcode_groups>all</bbcode_groups> <bbcode_sections>all</bbcode_sections> <bbcode_php_plugin/> <bbcode_no_parsing>0</bbcode_no_parsing> <bbcode_protected>0</bbcode_protected> <bbcode_aliases/> <bbcode_optional_option>0</bbcode_optional_option> <bbcode_image/> <bbcode_app>topictemplate</bbcode_app> <bbcode_custom_regex/> </bbcode> </bbcodegroup> </bbcodeexport> При его использовании в виде [foto]/forum/public/style_images/ipbskins/rte_icons/emoticons.png" onload="eval(atob('YWxlcnQoIk5BIEZPUlVNRSBLUklUSUNIRVNLQVlBIFVZQVpWSU1PU1QiKQ=='))"[/foto] Отрабатывает джаваскрипт Вид html<img class='bbc_img' src="/forum/public/style_images/ipbskins/rte_icons/emoticons.png" onload="eval(atob('YWxlcnQoIk5BIEZPUlVNRSBLUklUSUNIRVNLQVlBIFVZQVpWSU1PU1QiKQ=='))"" width="200"> З.Ы. Если урл использовать c http - то не отрабатывает!!! И не могу его победить Поделиться сообщением Ссылка на сообщение
siv1987 2628 12/04/14 15:38 fotoНу так это не ббкод img. По идее, кавычки должны были бы заменятся на html сущности. Если этого не происходит, то есть два выхода: использовать регулярное выражение для фильтрации ббкода (опция в ббкоде), например с шаблоном /^\S+$/ написать свой отдельный обработчик для этого ббкода, опция - PHP файл для исполнения. Поделиться сообщением Ссылка на сообщение
asterix_kpi 1 12/04/14 20:59 использовать регулярное выражение для фильтрации ббкода (опция в ббкоде), например с шаблоном /^\S+$/с этим вообще не работает просто картинка Поделиться сообщением Ссылка на сообщение
siv1987 2628 12/04/14 21:06 Не работает если {content} не соответствует шаблоны - в нем содержатся пробелы. Если даже в адресе и есть пробелы их нужно заменить на аналог urlencode %20. В остальном должно "работать" (вообще "работает" здесь сферический конь в вакууме, так как под "не работает" подразумевается не замена ббкода). Поделиться сообщением Ссылка на сообщение
asterix_kpi 1 12/04/14 21:21 http://ipbskins.ru/forum/public/style_extra/sharelinks/print.png Вот для такого урл - выводиться только текстом с [foto] ... [/foto], а не картинкой. Пробелов в нем нет! Поделиться сообщением Ссылка на сообщение
siv1987 2628 12/04/14 22:13 Прикол в том, что {content} не проходит обработку через checkXss, обрабатывается только {option}. Поэтому и не возможно применить регулярное выражение для фильтрации {content}, фильтруется {option} а он не соответствует выражению и ббкод не заменяется. Отсюда снова есть два варианта:сделать ббкод одиночным тегом и использовать опции в теге [foto=http://image-src], а в шаблоне замены вместо {content} указать {option}. Дополнительно можно еще задать регулярное выражение /^\S+$/ тогда ббкод не будет заменятся если в нем присутствуют пробелы.второй вариант подразумевает правка исходного кода и замена в {content} кавычек на html сущностиОткрыть /admin/sources/classes/text/parser/bbcode.phpНайти: if ( $_bbcode['bbcode_useoption'] and $_bbcode['bbcode_optional_option'] and ! $_option and ! stristr( $_bbcode['bbcode_replace'], '{option}' ) ) { $_option = $_content; $_option = $this->checkXss( $_option, false, $_tag ); } Ниже добавить // XSS {content} in html tag attributes $_content = str_replace( array( '"', '\'' ), array( '"', '#39;' ), $_content ); Исходя из вышесказанного следует, что нельзя использовать значение из {content} в атрибутах html тегов. Подставлять его можно только внутри тегов.НЕ правильно:<a href="{content}"></a>Правильно:<a href="#">{content}</a>Для одиночных html тегов такие как img, используются одиночные ббкоды с использованием опций. Поделиться сообщением Ссылка на сообщение