VBsupport перешел с домена .ORG на родной .RU
Ура!
Пожалуйста, обновите свои закладки - VBsupport.ru
Блок РКН снят, форум доступен на всей территории России, включая новые терртории, без VPN
На форуме введена премодерация ВСЕХ новых пользователей
Почта с временных сервисов, типа mailinator.com, gawab.com и/или прочих, которые предоставляют временный почтовый ящик без регистрации и/или почтовый ящик для рассылки спама, отслеживается и блокируется, а так же заносится в спам-блок форума, аккаунты удаляются
Если вы хотите приобрести какой то скрипт/продукт/хак из каталогов перечисленных ниже: Каталог модулей/хаков
Ещё раз обращаем Ваше внимание: всё, что Вы скачиваете и устанавливаете на свой форум, Вы устанавливаете исключительно на свой страх и риск.
Сообщество vBSupport'а физически не в состоянии проверять все стили, хаки и нули, выкладываемые пользователями.
Помните: безопасность Вашего проекта - Ваша забота. Убедительная просьба: при обнаружении уязвимостей или сомнительных кодов обязательно отписывайтесь в теме хака/стиля
Спасибо за понимание
<style>
.iframecontent{
padding: 2px;
border-radius: 6px;
box-shadow: 0 0 6px rgba(0,0,0,0.3);
border: 1px solid;
border-color: #ECECEC;
background-color: #F2F6F8;
}
.iframetitle{
font-size: smaller;
color: #5A7F97;
font-style: italic;
}
</style><div align="center"><span class="iframetitle"><script>
(function() {
var dirtiframe = "{param}";
var regexurl = new RegExp(/(?:google.com|adobe.com|videohive.net)/);
var provider = dirtiframe.match(regexurl);
var providerurl = 'Provider' + provider;
var sourceurl = '<a href="' + "{option}" + '">' + 'Source</a>';
document.write(providerurl + '<br />);
document.write(sourceurl + '<br />');
})();
</script></span><hr noshade="" size="1" width="50%"><script>
var dirtiframe = "{param}";
var cleariframe = dirtiframe.replace(new RegExp('"','g'),'\'');
var slicediframe = cleariframe.slice(10,-19);
var regiframe = new RegExp(/.\w.+(?:google.com.\w.+|adobe.com.\w.+|videohive.net.\w.+)/);
var result = slicediframe.match(regiframe);
document.write('<iframe class="iframecontent"'+result+'></iframe>');
</script></div>
В коде, в целях безопасности, есть проверка того, что-бы для вставки фреймов использовались только допустимые домены.
Так же используется опция, для того, что-бы можно было перейти на страницу источника. Она тоже перепроверяется.
Вообщем то все работает и меня почти устраивает.
Но есть пара вопросов к уважаемым комрадам.
1)Какую опасность может представлять из себя бб-код с айфреймами в подобном исполнении?
О том, что если юзеры могут использовать айфрейм с любого ресурса, это можно использовать для перехвата хешей, куков и т.д. и то, что это можно использовать для распростронения вредоносных скриптов я читал и понял. Ограждает ли от подобных опасностей тот факт, что происходит проверка использования контента только с допустимых доменов? Какие еще подводные камни могут возникнуть?
2)Вторая проблема больше косметического плана. Как я уже говорил выше, в коде я использовал опцию, в которой необходимо указывать страницу источника. И тут есть один затык. Если юзер поленится вставить ссылку и поле с опцией останется не заполненой, то в итоге, в сообщении отображается не айфрейм, а его код. Есть ли способ этого можно избежать? То-есть, что-бы было так, что если опция не заполнена, ббкод вообще не отражал бы ничего или само-удалялся?
3)При быстром ответе/редактировании бб-код не срабатывает как положено. Он верно сохраняет содержимое сообщения, однако не выводит айфрейм. Он появляется только после перезагрузки страницы. Это можно как то побороть?
Ну и вообще… укажите на тупняки присутствующие здесь)))
Например, пока я писал это сообщение, я подумал, что при генерации ссылок, наверное следует добавить нофолоу…
Спасибо всем отозвавшимся!
Last edited by taravasya : 04-10-2014 at 04:31 AM.
ифрейм сам по себе не есть гут, а уж тем более с такой "проверкой"
это не проверка вообще, яваскрипт выполняется на стороне клиента
нужна проверка в пхп коде, т.е. такой ббкод ну никак нельзя добавлять через менеджер ббкодов, то модулями и только с проверкой в пхп
Тут у Вас опечатка,.. можно "полную версию" текста?)))
taravasya добавил 10.04.2014 в 11:43
Мне нужно действовать по логике изложенной здесь: http://vbsupport.ru/forum/showthread.php?t=44414
?
В той теме инфа изложена по третьей булке. Можно подсказку, что изменилось в 4й(я так понимаю, что названия переменных теперь другие), и не изменился ли сам принцип действий?
Last edited by taravasya : 04-10-2014 at 12:43 PM.
Reason: Добавлено сообщение
kerk
k0t
Join Date: May 2005
Location: localhost
Posts: 28,748
Версия vB: 3.8.x
Пол:
Reputation:
Гуру 20279
Репутация в разделе: 8443
2
да, опечатка, вместо "то", читать "только"
переменные они и в африке переменные и кодер сам дает им имена
если в ббкодах нет подключения шаблонов и/или в шаблонах не используются переменные из ббкода, то код из статьи по ссылке годится для любой версии
@taravasya
Знаток
Join Date: Apr 2011
Posts: 187
Версия vB: 4.1.x
Reputation:
Knowing 126
Репутация в разделе: 85
0
Я понимаю, что имена переменных я сам могу назначать, я просто имел ввиду, может быть в том примере использовались какие-нибудь служебные переменные используемые движком булки. В частности вот эта: $custom_bbcode? В данном случае это тоже произвольное имя переменной?
@taravasya
Знаток
Join Date: Apr 2011
Posts: 187
Версия vB: 4.1.x
Reputation:
Knowing 126
Репутация в разделе: 85
0
@SMak044, я в PHP, дупль-пусто....
Ну вот наваял такое(это черновичок, просто для освоения):
бб-код изначально задуман для вставки iframe-ов, с заведомо разрешённых доменов.
В дебаггере regexp-а, видно, что вся строка используемого кода вставки, сопоставляется паттерну, то-есть регулярное выражение работает верно. Однако в сообщении остаётся одно слово: "Array"
Я так понимаю, что возвращается не верный тип данных?
Подскажите пожалуйста, как его преобразовать?
taravasya добавил 11.04.2014 в 00:55
Прошу прощения. В ретурне изначально пропустил [0]. После того, как добавил его, в сообщении вместо самого фрейма, стал оставаться текст кода вставки
Что ещё нужно сделать, что-бы вставлялся сам фрейм?
Last edited by taravasya : 04-11-2014 at 01:58 AM.
Reason: Добавлено сообщение
kerk
k0t
Join Date: May 2005
Location: localhost
Posts: 28,748
Версия vB: 3.8.x
Пол:
Reputation:
Гуру 20279
Репутация в разделе: 8443
2
переменная $cleariframe[0] содержит один из доменов
и нужно проверять входящие данные, перед ретурном
если не соотв. шаблону, возвращать false или свое что то, типа "ошибка бла бла бла..."
вот пример ббкода с файловика домен соотв. тем что разрешены в настройках https://www.youtube.com/watch?v=ak6omNRd6-g
Kea - The Smartest Parrot [THE COMPLETE DOCUMENTARY]
YouTube.com 00:23:03
и нЕ валидный видеосервис https://www.blablabla.com/watch?v=ak6omNRd6-g
Invalid or unsupported media service
====
где то я выкладывал уже хак с парсингом видеохостингов, там можно глянуть, как реализовано
@taravasya
Знаток
Join Date: Apr 2011
Posts: 187
Версия vB: 4.1.x
Reputation:
Knowing 126
Репутация в разделе: 85
0
Quote:
Originally Posted by kerk
нужно проверять входящие данные, перед ретурном
если не соотв. шаблону, возвращать false или свое что то, типа "ошибка бла бла бла..."
До этого пока руки не добрались. Мне очень трудно даётся всё это. Приходится по крупице гуглить каждую строчку((( но разобраться хочется самому))). И конечно, я понимаю, что нужно сделать обработку ошибки... Кроме того планирую сделать продукт, связанный с этим бб-кодом, что-бы админу, в настройках, удобно было-бы вбивать "разрешённые" домены. И возможно текст ошибки, в случае не соответствия ни одному из доменов...
---------
Я так понял, что выводился текст кода, а не сам фрейм, потому, что я оставлял весь текст, тот который вбивается юзером между тегами. Видимо булка изначально игнорирует его как возможный html. После того как я сделал вот так:
, то-есть тупо отрезал начало и конец(собственно сами теги <iframe></iframe>), а потом в модуле снова их "дописал", вставка фрейма заработала(там ещё была проблема с кавычками в коде фрейма, но вроде разобрался).
Но теперь возникла проблема с визуальным редактором, которую я описал ниже:
Есть несколько затыков...
1)Если после размещения сообщения, открыть его в редакторе для быстрого редактирования, при условии, что включён визуальный редактор, и тут-же отключить этот самый визуальный редактор, то код вместе с тегом бб-кода исчезает безвозвратно((((
2)В расширенном редакторе, в предварительном просмотре, тег не отображает содержимое фрейма. При этом, опять же если включён визуальный редактор, фрейм чудесно отображается в окне самого редактора. Опять же... стоит отключить его и весь код, тут же удаляется начисто...
3)Ну и есть проблема с гугл-мап.. хотя она совсем абстрактная и вряд ли без собственно ручного вмешательства кто-то, что-то поймёт. Дело в том, что после размещения сообщения, фрейм отображается без правильного места положения. На карте, отображается тупо весь мир))) А если открыть сообщение для редактирования, там уже место положения правильное.. Вообще чертовщина какая то.....
---------
Схожая с первыми двумя проблема, была у какого-то из хаков хайда. Когда-то ставил, и обнаружил, что содержимое сообщения, находящееся в его тегах, после редактирования исчезало...
Вот.... Может быть кто-то что-то сможет подсказать?
Подозреваю, что нужно, для редактора, сделать отдельную обработку, что-бы фрейм не выводился в окне редактора. Но как это сделать, даже представить не могу....
Понимаю, что это уже нужно писать в разделе по 4й булке, но там к сожалению, нет подобных тем..((
Last edited by taravasya : 04-11-2014 at 05:10 AM.
Reason: Добавлено сообщение
kerk
k0t
Join Date: May 2005
Location: localhost
Posts: 28,748
Версия vB: 3.8.x
Пол:
Reputation:
Гуру 20279
Репутация в разделе: 8443
2
Quote:
Originally Posted by taravasya
1)Если после размещения сообщения, открыть его в редакторе для быстрого редактирования, при условии, что включён визуальный редактор, и тут-же отключить этот самый визуальный редактор, то код вместе с тегом бб-кода исчезает безвозвратно
добавить модуль на хуке bbcode_create что бы вобла не парсила кастомный ббкод
Теперь при включённом визуальном редакторе, вместо фрейма, в окне редактора, отображается только текст в тегах. Соответственно включение/выключение визуального редактора во-время редактирования сообщения никак не влияет на содержимое и текст с тегами не пропадает. Осталась лишь проблема с предпросмотром сообщений в режиме полного редактирования..... но думаю, что так же методом поиска аналогов уже смогу разобраться и вскоре представлю новый бб-код в разделе с хаками))
-----------------
Уважаемые модераторы, можно перенести это и предыдущие три сообщения в эту тему: http://vbsupport.ru/forum/showthread.php?t=49744
дабы содержание более соответствовало разделу?
Спасибо.
taravasya добавил 11.04.2014 в 15:59
Quote:
Originally Posted by kerk
добавить модуль на хуке bbcode_create что бы вобла не парсила кастомный ббкод
kerk, О! Спасибо! А я как раз тоже нашёл это решение!
Last edited by taravasya : 04-11-2014 at 05:04 PM.
Reason: Добавлено сообщение