asterix_kpi Posted November 22, 2014 Share Posted November 22, 2014 Прошу удалить... разобрался Link to comment Share on other sites More sharing options...
siv1987 Posted November 22, 2014 Share Posted November 22, 2014 Так что там с xxs то, есть или нет? Link to comment Share on other sites More sharing options...
asterix_kpi Posted December 4, 2014 Author Share Posted December 4, 2014 на версии 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 - то не отрабатывает!!! И не могу его победить Link to comment Share on other sites More sharing options...
siv1987 Posted December 4, 2014 Share Posted December 4, 2014 fotoНу так это не ббкод img. По идее, кавычки должны были бы заменятся на html сущности. Если этого не происходит, то есть два выхода: использовать регулярное выражение для фильтрации ббкода (опция в ббкоде), например с шаблоном /^\S+$/ написать свой отдельный обработчик для этого ббкода, опция - PHP файл для исполнения. Link to comment Share on other sites More sharing options...
asterix_kpi Posted December 4, 2014 Author Share Posted December 4, 2014 использовать регулярное выражение для фильтрации ббкода (опция в ббкоде), например с шаблоном /^\S+$/с этим вообще не работает просто картинка Link to comment Share on other sites More sharing options...
siv1987 Posted December 4, 2014 Share Posted December 4, 2014 Не работает если {content} не соответствует шаблоны - в нем содержатся пробелы. Если даже в адресе и есть пробелы их нужно заменить на аналог urlencode %20. В остальном должно "работать" (вообще "работает" здесь сферический конь в вакууме, так как под "не работает" подразумевается не замена ббкода). Link to comment Share on other sites More sharing options...
asterix_kpi Posted December 4, 2014 Author Share Posted December 4, 2014 http://ipbskins.ru/forum/public/style_extra/sharelinks/print.png Вот для такого урл - выводиться только текстом с [foto] ... [/foto], а не картинкой. Пробелов в нем нет! Link to comment Share on other sites More sharing options...
siv1987 Posted December 4, 2014 Share Posted December 4, 2014 Прикол в том, что {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, используются одиночные ббкоды с использованием опций. Link to comment Share on other sites More sharing options...
asterix_kpi Posted December 9, 2014 Author Share Posted December 9, 2014 Спасибо Вам, что Вы есть!!! Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now