Ginko 0 Опубликовано: 30 января 2011 Рассказать Опубликовано: 30 января 2011 Внезапно антигород.ком В последние пару месяцев ведущие видеохостинги стали предлагать для вставки код iframe. По не совсем понятным для меня (простите дилетанта) причинам безопасности этот код не поддерживается плеером движка. В то же время пользователи массового его используют по той простой причине что копируют его не задумываясь. В итоге - плохо всем. Вопрос: как же сделать так, что бы ifrmae обрабатывался движком? Спасибо Цитата Ссылка на сообщение Поделиться на других сайтах
zgr 72 Опубликовано: 31 января 2011 Рассказать Опубликовано: 31 января 2011 Никак, вставлять в БД напрямую. Я "за", чтобы скрипты и фреймы вырезало из новостей, поскольку их нельзя контролировать, они часто живут своей жизнью и могут нанести вред как сайту админу, так и пользователям сайта. Нужно искать варианты, типа innerHTML (если так будет работать стандартно), что немного, но безопасней, либо другие способы загрузки, либо просто отказаться от всяких варёзных гамносетей. Цитата Ссылка на сообщение Поделиться на других сайтах
Ginko 0 Опубликовано: 31 января 2011 Рассказать Опубликовано: 31 января 2011 Автор zgr, снова спасибо за ответ. Не совсем понял про "гамносети", т.к. вопрос был про видеохостинги YouTube и Vimeo, которые сейчас перешли на iframe. Если использование фреймов такая опасная штука, то не совсем понятна логика этих сервисов. Пользователям ведь не объяснишь, что каждый раз надо использовать "старый код". В тоже время, если они перещли на ифреймы, то, наверное, есть какой-то механизм защиты от нежелательных действий во всяких уютных жежешечках и вордпресах? Что скажет программно-продвинутая общественность? Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 082 Опубликовано: 31 января 2011 Рассказать Опубликовано: 31 января 2011 Ginko, iframe это HTML тег для загрузки любого контента на свои страницы, с любых других сайтов. И данный загружаемый контент, может быть как полезный так и содержать вирусы. И если разрешить данный тег, то любой может добавить на ваш сайт новости с вирусами, вот и все. Цитата Ссылка на сообщение Поделиться на других сайтах
Ginko 0 Опубликовано: 31 января 2011 Рассказать Опубликовано: 31 января 2011 Автор celsoft, я собственно так и понял. Просто в продолжение дискуссии интересуюсь чем себя защищают движки, где эта вставка разрешена. Собственно, почти наверняка ютуб и прочие продолжат пролитику вставки своего кода только через ифрейм, а значит скоро подобный вопрос возникнет у многих. Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 082 Опубликовано: 31 января 2011 Рассказать Опубликовано: 31 января 2011 Просто в продолжение дискуссии интересуюсь чем себя защищают движки, где эта вставка разрешена Ничем.Собственно, почти наверняка ютуб и прочие продолжат пролитику вставки своего кода только через ифрейм, а значит скоро подобный вопрос возникнет у многих. Ошибаетесь. Действительно популярные видеохостинги такие коды не используют. В контакте исключение. Цитата Ссылка на сообщение Поделиться на других сайтах
zgr 72 Опубликовано: 1 февраля 2011 Рассказать Опубликовано: 1 февраля 2011 продолжат пролитику вставки своего кода только через ифрейм С чего вы это взяли? Зашел на Тюбик, там всё по-прежнему. Кликните опции: Включить режим повышенной конфиденциальности Использовать старый код встраивания И вставляйте как обычный флеш, поддерживается сейчас варианты: <object><embed></embed></object> и <iframe></iframe> П.С. Целсофт, теги сломались - в Опере двойные ставятся на форуме. Цитата Ссылка на сообщение Поделиться на других сайтах
Ginko 0 Опубликовано: 1 февраля 2011 Рассказать Опубликовано: 1 февраля 2011 (изменено) Автор Господа, вынужден не согласиться с вами. Вот скрины нынешних ютуба и вимео: Как видите, везде по умолчанию стоит ифрейм. Вариант, предложенный уважаемым zgr не подходит, т.к. контент наполняют сами посетители и, увы, каждому не объяснишь какие галочки где нажимать. Вот такая незадача. У себя на сайте я, пожалуй, прикручу сообщение при добавлении видео, о том, что используются только <embed> коды. Но, боюсь, в конечном итоге придется искать какое-то решение и разработчикам движкам. Изменено 1 февраля 2011 пользователем Ginko Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 082 Опубликовано: 1 февраля 2011 Рассказать Опубликовано: 1 февраля 2011 Ginko, для ютуба в DLE есть собственный тег. По второму скрину непонятно что за сервис, может его также стоит будет добавить в поддержку тегов. Цитата Ссылка на сообщение Поделиться на других сайтах
WWW.ZEOS.IN 1 161 Опубликовано: 1 февраля 2011 Рассказать Опубликовано: 1 февраля 2011 На втором скриншоте это скорее всего сервис: http://vimeo.com/ Цитата Ссылка на сообщение Поделиться на других сайтах
Ginko 0 Опубликовано: 1 февраля 2011 Рассказать Опубликовано: 1 февраля 2011 Автор WWW.ZEOS.IN, именно он родимый celsoft, да, возможно это будет верное решение проблемы. Вимео - очень качественный и довольно популярный видеохостинг Цитата Ссылка на сообщение Поделиться на других сайтах
- Den - 32 Опубликовано: 1 февраля 2011 Рассказать Опубликовано: 1 февраля 2011 (изменено) Ginko, на vimeo есть возможность вставки без iframe. На кодом смотрите Don't like change? Use the old embed code instead Изменено 1 февраля 2011 пользователем - Den - Цитата Ссылка на сообщение Поделиться на других сайтах
Ginko 0 Опубликовано: 1 февраля 2011 Рассказать Опубликовано: 1 февраля 2011 Автор - Den -, я повторюсь: лично я стараюсь читать вспомогательные надписи на сайтах и уж точно обращаю внимание, если привычный код меняется. Собственно, как только начались перемены на ютубе и вимео, я, как раз, просто перешел на "старый" код. Проблема в другом: сайт наполняется пользователями, а вот они, увы, зачастую просто копируют не глядя и потом удивляются, почему их видео не отображается. Цитата Ссылка на сообщение Поделиться на других сайтах
zgr 72 Опубликовано: 1 февраля 2011 Рассказать Опубликовано: 1 февраля 2011 Den, ему нужно автонаполнение через прожки, постящие не смотрят что и как правильно на сайт постить, они просто тупо суют новости и всё. Как вариант, можно открыть файл /engine/modules/addnews.php, найти запрос: $db->query( "INSERT INTO " . PREFIX . "_post (date, autor, ... Перед публикацией проверить наличие фрейма: preg_match('<iframe[^>]*src=(.*?)[^>]*>.*?</iframe>',$short_story,$f1); preg_match('<iframe[^>]*src=(.*?)[^>]*>.*?</iframe>',$full_story,$f2); Если фрейм присутствует, то заменить на стандартный прлеер: if (isset($f1[1]) && trim($f1[1])!='') preg_replace('|'.$f1[0].'|smi',$player,$short_story); if (isset($f2[1]) && trim($f2[1])!='') preg_replace('|'.$f2[0].'|smi',$player,$short_story); Для снижения нагрузки, можно более лучший вариант продумать, например, сначала задать поиск фреймов, а потом регуляркой уже обходить и т.д. Это просто для примера. Цитата Ссылка на сообщение Поделиться на других сайтах
Ginko 0 Опубликовано: 2 февраля 2011 Рассказать Опубликовано: 2 февраля 2011 (изменено) Автор zgr, ох как интересно! А можно последний абзац подробнее? Я, кхм, крайне слаб в програмировании. З.Ы. шутко про автонаполнение оценил Изменено 2 февраля 2011 пользователем Ginko Цитата Ссылка на сообщение Поделиться на других сайтах
zgr 72 Опубликовано: 2 февраля 2011 Рассказать Опубликовано: 2 февраля 2011 А можно последний абзац подробнее? Я, кхм, крайне слаб в програмировании. Тогда и не заморачивайтесь Напишите свой плеер, который будет заменен, если кто вам фрейм отправит и всё: if (isset($f2[1]) && trim($f2[1])!='') { $f2[1] = trim($f2[1]); $player = <<<HTML Здесь код плеера. HTML; unset($f2[1]); } Путь: src="trim($f2[1])"; Цитата Ссылка на сообщение Поделиться на других сайтах
Ginko 0 Опубликовано: 2 февраля 2011 Рассказать Опубликовано: 2 февраля 2011 Автор а стандартный длешный можно подставить? и еще: вот, допустим, некий злодей захочет какойто вредоносный код встроить через ифрейм, как поведет себя написанная Вами конструкция и сайт в целом? Цитата Ссылка на сообщение Поделиться на других сайтах
zgr 72 Опубликовано: 2 февраля 2011 Рассказать Опубликовано: 2 февраля 2011 (изменено) как поведет себя написанная Вами конструкция и сайт в целом? Если формат совпадет, то заменит зловредный код на плеер, т.е. ничего не произойдет, вирус не запустится так, но лучше услышать ответ от более опытного программиста. а стандартный длешный можно подставить? Хоть что можете написать, это не важно, это всего лишь HTML. П.С. Чтобы наверняка только Тюбик заменял, то можно маску так написать: preg_match('<iframe[^>]*src=(http\:\/\/[w]{0,3}\.?youtube.com/.*?)[^>]*>.*?</iframe>',$short_story,$f1); Теперь уже точно будет только Тюбик переписан. Изменено 2 февраля 2011 пользователем zgr Цитата Ссылка на сообщение Поделиться на других сайтах
Ginko 0 Опубликовано: 2 февраля 2011 Рассказать Опубликовано: 2 февраля 2011 Автор ок... а как тогда правильно перенаправить на стандартный плеер? (или откуда копировать его код?) Цитата Ссылка на сообщение Поделиться на других сайтах
zgr 72 Опубликовано: 2 февраля 2011 Рассказать Опубликовано: 2 февраля 2011 откуда копировать его код? Ну, например, откройте свой и/или чужой сайт и посмотрите HTML-код, а можете зайти на сайт производителя и изучить все возможности плеера, каждый автор каждого плеера использует свои собственные настройки и всякие там ноу-хау. Цитата Ссылка на сообщение Поделиться на других сайтах
Ginko 0 Опубликовано: 2 февраля 2011 Рассказать Опубликовано: 2 февраля 2011 Автор ага, спасибо. В общем, если я правильно понял, то пошагово надо делать так: открыть файл /engine/modules/addnews.php найти запрос: $db->query( "INSERT INTO " . PREFIX . "_post (date, autor, ... Добавить выше preg_match('<iframe[^>]*src=(.*?)[^>]*>.*?</iframe>',$ short_story,$f1); preg_match('<iframe[^>]*src=(.*?)[^>]*>.*?</iframe>',$ full_story,$f2); или же, если разрешить вставку только для вимео и ютуба, то preg_match('<iframe[^>]*src=(http\:\/\/[w]{0,3}\.?youtube. com/.*?)[^>]*>.*?</iframe>',$short_story,$f1); preg_match('<iframe[^>]*src=(http\:\/\/[w]{0,3}\.?youtube. com/.*?)[^>]*>.*?</iframe>',$full_story,$f1); preg_match('<iframe[^>]*src=(http\:\/\/[w]{0,3}\.?vimeo. com/.*?)[^>]*>.*?</iframe>',$short_story,$f1); preg_match('<iframe[^>]*src=(http\:\/\/[w]{0,3}\.?vimeo. com/.*?)[^>]*>.*?</iframe>',$full_story,$f1); Если фрейм присутствует, то заменить на стандартный плеер: if (isset($f1[1]) && trim($f1[1])!='') preg_replace('|'.$f1[0].'|smi',$player,$short_story); if (isset($f2[1]) && trim($f2[1])!='') preg_replace('|'.$f2[0].'|smi',$player,$full_story); Я верно написал? Цитата Ссылка на сообщение Поделиться на других сайтах
zgr 72 Опубликовано: 2 февраля 2011 Рассказать Опубликовано: 2 февраля 2011 Я верно написал? да, верно. Сам плеер только забыли Перед: if (isset($f1[1]) && trim($f1[1])!='') preg_replace('|'.$f1[0].'|smi',$player,$short_story); Вставьте (см. выше сообщение): if (isset($f2[1]) && trim($f2[1])!='') { $f2[1] = trim($f2[1]); $player = <<<HTML Здесь код плеера. HTML; unset($f2[1]); } Это для $full_story, для $short_story тоже так, только с переменной $f1[1]. HTML-код плеера можно любой написать, какой нужен. Можно совместить 2 сервиса, чтоб нагрузку снизить, т.е. вместо: preg_match('<iframe[^>]*src=(http\:\/\/[w]{0,3}\.?youtube\.com/.*?)[^>]*>.*?</iframe>',$short_story,$f1); preg_match('<iframe[^>]*src=(http\:\/\/[w]{0,3}\.?youtube\.com/.*?)[^>]*>.*?</iframe>',$full_story,$f2); preg_match('<iframe[^>]*src=(http\:\/\/[w]{0,3}\.?vimeo\.com/.*?)[^>]*>.*?</iframe>',$short_story,$f1); preg_match('<iframe[^>]*src=(http\:\/\/[w]{0,3}\.?vimeo\.com/.*?)[^>]*>.*?</iframe>',$full_story,$f2); можно так: preg_match('<iframe[^>]*src=(http\:\/\/[w]{0,3}\.?(?:vimeo|youtube)\.com/.*?)[^>]*>.*?</iframe>',$short_story,$f1); preg_match('<iframe[^>]*src=(http\:\/\/[w]{0,3}\.?(?:vimeo|youtube)\.com/.*?)[^>]*>.*?</iframe>',$full_story,$f2); Это тоже самое, но короче. Цитата Ссылка на сообщение Поделиться на других сайтах
Ginko 0 Опубликовано: 2 февраля 2011 Рассказать Опубликовано: 2 февраля 2011 Автор Спасибо! Буду пробовать Цитата Ссылка на сообщение Поделиться на других сайтах
Ginko 0 Опубликовано: 6 февраля 2011 Рассказать Опубликовано: 6 февраля 2011 Автор zgr, что то я определенно где-то подтупил, пытаясь запихнуть в дефолтный плеер: //iframe preg_match('<iframe[^>]*src=(http\:\/\/[w]{0,3}\.?(?:vimeo|youtube)\.com/.*?)[^>]*>.*?</iframe>',$short_story,$f1); preg_match('<iframe[^>]*src=(http\:\/\/[w]{0,3}\.?(?:vimeo|youtube)\.com/.*?)[^>]*>.*?</iframe>',$full_story,$f2); if (isset($f1[1]) && trim($f1[1])!='') { $f1[1] = trim($f1[1]); $player = <<<HTML <!--dle_video_begin--><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" id="Player-418a2b4aed9017952e663582ff363929" height="338" width="95%"> <param name="movie" value="src="trim($f1[1])";&defaultMedia=1&showPlayButton=true&playOnStart=false&backgroundBarColor=0x1A1A1A&btnsColor=0xFFFFFF&outlineColor=0x666666&outputBkgColor=0x1A1A1A&outputTxtColor=0x999999&loadingBarColor=0x666666&loadingBackgroundColor=0xCCCCCC&progressBarColor=0x000000&volumeBackgroundColor=0x666666&volumeStatusBarColor=0x000000"> <param name="allowFullScreen" value="true"> <param name="quality" value="high"> <param name="bgcolor" value="#000000"> <param name="wmode" value="opaque"> <embed src="trim($f1[1])";&defaultMedia=1&showPlayButton=true&playOnStart=false&backgroundBarColor=0x1A1A1A&btnsColor=0xFFFFFF&outlineColor=0x666666&outputBkgColor=0x1A1A1A&outputTxtColor=0x999999&loadingBarColor=0x666666&loadingBackgroundColor=0xCCCCCC&progressBarColor=0x000000&volumeBackgroundColor=0x666666&volumeStatusBarColor=0x000000" quality="high" bgcolor="#000000" wmode="opaque" allowfullscreen="true" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" align="middle" height="338" width="95%"> </object><!--dle_video_end--> HTML; unset($f1[1]); } if (isset($f2[1]) && trim($f2[1])!='') { $f2[1] = trim($f2[1]); $player = <<<HTML <!--dle_video_begin--><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" id="Player-418a2b4aed9017952e663582ff363929" height="338" width="95%"> <param name="movie" value="src="trim($f2[1])";&defaultMedia=1&showPlayButton=true&playOnStart=false&backgroundBarColor=0x1A1A1A&btnsColor=0xFFFFFF&outlineColor=0x666666&outputBkgColor=0x1A1A1A&outputTxtColor=0x999999&loadingBarColor=0x666666&loadingBackgroundColor=0xCCCCCC&progressBarColor=0x000000&volumeBackgroundColor=0x666666&volumeStatusBarColor=0x000000"> <param name="allowFullScreen" value="true"> <param name="quality" value="high"> <param name="bgcolor" value="#000000"> <param name="wmode" value="opaque"> <embed src="trim($f2[1])";&defaultMedia=1&showPlayButton=true&playOnStart=false&backgroundBarColor=0x1A1A1A&btnsColor=0xFFFFFF&outlineColor=0x666666&outputBkgColor=0x1A1A1A&outputTxtColor=0x999999&loadingBarColor=0x666666&loadingBackgroundColor=0xCCCCCC&progressBarColor=0x000000&volumeBackgroundColor=0x666666&volumeStatusBarColor=0x000000" quality="high" bgcolor="#000000" wmode="opaque" allowfullscreen="true" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" align="middle" height="338" width="95%"> </object><!--dle_video_end--> HTML; unset($f2[1]); } if (isset($f1[1]) && trim($f1[1])!='') preg_replace('|'.$f1[0].'|smi',$player,$short_story); if (isset($f2[1]) && trim($f2[1])!='') preg_replace('|'.$f2[0].'|smi',$player,$full_story); //iframe Помогите, пожалуйста. Цитата Ссылка на сообщение Поделиться на других сайтах
zgr 72 Опубликовано: 7 февраля 2011 Рассказать Опубликовано: 7 февраля 2011 (изменено) zgr, что то я определенно где-то подтупил, пытаясь запихнуть в дефолтный плеер: Ничё, бывает Просто не изобретайте уже изобретённый велосипед и всё будет работать В конструкции: $player = <<<HTML Здесь код плеера. HTML; Функции php не работают, поэтому все функции нужно вынести за пределы нее: $f2[1] = trim($f2[1]); Если массивы не будут просто так работать, то обрамляем их фигурными скобками: $player = <<<HTML Здесь код плеера. echo {arr['arr']}; HTML; А функции пишем так: $f2[1] = trim($f2[1]); $player = <<<HTML Здесь код плеера. echo {$f2[1]}; HTML; И всё должно работать. См. пример выше, специально же написал для ориентации, как надо, а вы всё по-своему пишите Изменено 7 февраля 2011 пользователем zgr Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.