Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.07.2012, 13:41   #1
InternetStranger
php / delphi
Форумчанин
 
Аватар для InternetStranger
 
Регистрация: 10.06.2007
Сообщений: 175
По умолчанию Контроль внедрения через iframe на сторонних ресурсах

Доброго дня всем форумчанам!
Подскажите пожалуйста, как можно решить следующую задачку:

Допустим на нашем сайте есть некая страничка с видеоплеером http://example.com/player.php, которая предназначена для внедрения на сторонние ресурсы, но не на все подряд, а лишь на те, которые мы сами разрешаем. Внедрение решили сделать через iframe (максимально просто для сторонних ресурсов и довольно надежно). И вот возник самый главный вопрос, а как теперь контролировать, на какие домены внедрена наша страничка.

Если сводить задачу в следующей: "Как узнать, с какого домена загружена через iframe страница http://example.com/player.php?", то пытались так:

---------------------------------------
Попытка №1:
На странице http://example.com/player.php js-скрипт пытался прочитать
window.top.location.host, и в случае, когда внедрение происходит не на example.com, браузерная консоль справедливо ругается:
Permission denied to access property 'host'
Все понятно, лавочку давно прикрыли. Политика безопасности, все дела...

---------------------------------------
Попытка №2:
На странице http://example.com/player.php на сервере считывался хттп-заголовок "REFERER" (содержит адрес страницы, с которой прилетел запрос),

PHP код:
<?php echo (
(( 
$url $_SERVER['HTTP_REFERER'] ) && ($urlComp parse_url$url )))
   ? 
$urlComp['host'
   : 
'unknow'       
); ?>
Только вот оказалось, что далеко не все браузеры заполняют это поле. Уж не знаю, как именно, видимо опция там и плагины или еще какие странные проблемы. И это был браузер начальника, разумеется )) как это обычно бывает

---------------------------------------
Попытка №3 (чисто теоретически):
В принципе, удаленному ресурсу можно выдавать некий секретный токен, который меняется ежедневно (кому выдается токен уже проще контролировать). Вопрос только как удаленный ресурс его будет передать его в iframe (напомню, нужно html-copy-past-решение). В принципе, можно вставлять некий js-код, который динамически генерирует iframe, добавляя токен в GET-параметры:
Код HTML:
<iframe width="480" scrolling="no" height="384" style="border: 2px solid #778899;" src="http://example.com/player.php?secret_token=254ldfkng">
</iframe>
Но как-то не нравится такая конструкция. Может еще какие варианты есть?
G.Azamat { Web Development / Computer simulation }
Начинающий программист думает, что в килобайте 1000 байтов, а законченный уверен, что в километре 1024 метра.
InternetStranger вне форума Ответить с цитированием
Старый 24.07.2012, 18:12   #2
Mortimoro
Форумчанин
 
Регистрация: 03.12.2010
Сообщений: 334
По умолчанию

на фреймах однозначно идентифицировать сайт-получатель не получится, а токен может просмотреть каждый желающий и если надо, парсить его каждый день и юзать в своих целях.

надо менять схему.
Mortimoro вне форума Ответить с цитированием
Старый 26.07.2012, 23:38   #3
InternetStranger
php / delphi
Форумчанин
 
Аватар для InternetStranger
 
Регистрация: 10.06.2007
Сообщений: 175
По умолчанию

Спасибо, но кажись выкрутиться можно. Как же сразу не сообразил, что однозначно идентифицировать и не надо!
Будем читать заголовок REFERER, и если удаленный домен в списке разрешенных хостов, либо не определен, то показываем страницу, в противном случае - блокируем.

Т.е. если посторонний сайт вздумает внедрить себе нашу страницу, то посмотреть его смогут лишь ~ 5-10% его посетителей, у которых дурной браузер не отправляет REFERER.

Теперь весь вопрос лишь в том, сможет ли посторонний сайт (js/flash - скриптом например) вырубить всем своим посетителям отправку REFERER?
Я такого вроде не встречал, но может кто/что видел.
G.Azamat { Web Development / Computer simulation }
Начинающий программист думает, что в килобайте 1000 байтов, а законченный уверен, что в километре 1024 метра.
InternetStranger вне форума Ответить с цитированием
Старый 28.07.2012, 19:28   #4
Mortimoro
Форумчанин
 
Регистрация: 03.12.2010
Сообщений: 334
По умолчанию

я бы не стал заморачиваться скриптами, чтоб вырубить посетителям отправку REFERER, а просто стягивал бы у тебя данные curl'ом (не указывая REFERER) и отдавал их своим посетителям удобным для меня способом.

потому здесь наверно все зависит от цены вопроса - если утечка 5-10% допустима, то незачем вообще заморачиваться с защитой, можно просто приклеить табличку "моё. не трогать!", а поле REFERER использовать только для контроля - если хост не входит в список разрешенных, то скидываем сообщение себе на e-mail, потом заходим на этот сайт ручками, находим контакты владельца и просим убрать свою собственность с его сайта. На крайняк, можно заверить нотариально свое правообладание и на особо несговорчивых товарищей подавать в суд.
если же утечку допускать не хотите, надо менять схему.
Mortimoro вне форума Ответить с цитированием
Старый 29.07.2012, 16:56   #5
InternetStranger
php / delphi
Форумчанин
 
Аватар для InternetStranger
 
Регистрация: 10.06.2007
Сообщений: 175
По умолчанию

Цитата:
просто стягивал бы у тебя данные curl'ом (не указывая REFERER) и отдавал их своим посетителям удобным для меня способом.
)) Совсем забыл сказать, что вещание идет исключительно через rtmp-вещалку, подключиться к которой можно только с одного домена (нашего). Но сервак админит аутсорсер (со всеми вытекающими), вот и пытаюсь без них управлять собственной "защитой" (потому собственно и iframe используется). В противном случае и курлом бы не пришлось бы пользоваться - достаточно было бы просто расковырять плеер и посмотреть куда он коннектится.

Да, наверное, самое умное - уведомлениями решить проблему ) Еще умнее было бы не жадничать, а вообще перенаправить пользователей с постороннего сайта на наш. Так и сделаем, спасибо )
G.Azamat { Web Development / Computer simulation }
Начинающий программист думает, что в килобайте 1000 байтов, а законченный уверен, что в километре 1024 метра.

Последний раз редактировалось InternetStranger; 29.07.2012 в 16:58.
InternetStranger вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа "Контроль запуска сторонних приложений локально" ImmortalAlexSan Фриланс 4 05.06.2012 10:35
WEB программисту-Требуется форма с запросом (наверное через iframe) allpc Фриланс 0 26.11.2010 15:09
Запрет внедрения в процесс yres51447 Общие вопросы Delphi 1 23.03.2010 17:45
должен подгрузиться скрипт который бы создал и вставил в этот див <iframe></iframe> Beni JavaScript, Ajax 1 05.08.2009 14:30
загрузка страницы через iframe Vento JavaScript, Ajax 6 25.07.2008 17:10