PDA

Просмотр полной версии : запретить чужие сайты для видеоклипов с помощью crossdomain.xml


pwlnw
21.03.2012, 19:50
Мне стало известно, что чужие сайты пользуются нашим сайтом в качестве поставщика контента и тем самым мешают нам раздавать ролики. На сайте уже есть защита от передачи ссылкой - классическая связка на nginx. Если один посетитель пошлет другому пользователю ссылку на ролик, то ничего у него не откроется. Каждая ссылка с хешем и секретом типа http://domain.ru/movie/3435454345/rolik.flv .

Судя по логу firebug, при загрузке страницы сайта-паразита происходит загрузка соответствующей страницы нашего сайта. грузится полностью html и разбирается внутри яваскрипта (а может и флеш-клипа). Таким образом, уникальную ссылку сайт-паратизит тоже может получить, но страницу и баннеры наши не покажет.

Внимание, вопрос, ЗАЧЕМ с сервера-хранилища загружается файл store.site.ru/crossdomain.xml и могу ли я в этом файле запретить подключения от чужих доменов?

Я уже пробовал такое содержимое :

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy
SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="domain.ru"/>
<allow-access-from domain="www.domain.ru.ru"/>
</cross-domain-policy>


И все равно сайт-паразит работает и грузит видео с нашего сайта.
В том же firebig видно как файл скачивается и содержимое его свежее не закешированное. Причем, у них там какой-то jwplayer используется, а не что-то волшебное-самописное.

Про rtmp и дополнительный контроль в нем я знаю, но хотелось бы обойтись только crossdomain.xml.

mooncar
21.03.2012, 19:59
Код - в теги.

alatar
21.03.2012, 20:12
но хотелось бы обойтись только crossdomain.xml.
Не получится. crossdomain запрещает манипуляции над содержимым (например, отрисовка в битмапу), но не запрещает проигрывать ролик.

Добавлено через 2 минуты
Можете добавить проверку Referer в заголовках HTTP, перед тем как отдавать ролик.

Добавлено через 6 минут
Или правильно настроить htaccess (http://htaccessfile.com/htaccess-block-access-by-referer).

pwlnw
21.03.2012, 20:28
crossdomain запрещает манипуляции над содержимым (например, отрисовка в битмапу), но не запрещает проигрывать ролик.

в чем прикол ? почему тогда у меня неоднократно на других сайтах флешеры просили разместить файлы crossdomain.xml ?
Я вижу, что перед тем как скачать ролик идет обращение к файлу crossdomain.xml. Других обращений к сайту из флеша до нажатия на кнопку кажется нет. Парсер странички скорее на яваскрипте слеплен.

Можете добавить проверку Referer в заголовках HTTP, перед тем как отдавать ролик.
Так он не передается в флеше. Передают только браузеры нормальные.
Или есть возможность заставить флешплеер передавать его обязательно? Напоминаю, что код плеера злоумышленник может и написать сам какой угодно. И передать заголовки тоже может. Они конкретно нацелены на массовую продажу сайтов-клонов.

alatar
21.03.2012, 20:43
почему тогда у меня неоднократно на других сайтах флешеры просили разместить файлы crossdomain.xml ?
Видимо хотели как-то обрабатывать контент.
Так он не передается в флеше.
Передается. Можете проверить сниффером.

Андрей911
21.03.2012, 20:58
Передается. Можете проверить сниффером.

Передается, но не во всех браузерах. Вот классная статься по теме .htaccess
http://www.proofsite.com.ua/article-2242.html

Добавлено через 1 минуту
pwlnw, вам прямо пункт 1 подойдет

pwlnw
21.03.2012, 21:10
Нет, запрос поступивший изнутри флешки referer не передает. И я проверял это буквально сегодня.
Иначе бы все делали защиту на основе referer.

Андрей911
21.03.2012, 21:21
Передает, но не во всех браузерах. Проверьте в Firefox, Google Chrome, Opera, IE, Safari
Еще это зависит от версии браузера. Если referer нет у вас - это не значит, что он отсутствует у других посетителей сайта.

То есть защита по referer вас не спасет на 100% от использования контента, но у 70% а то и больше видео на "вражеском сайте" не пойдут. Попробуйте и проверьте насколько снизится нагрузка. В любом случае ничего не потеряете.

pwlnw
21.03.2012, 21:34
Во всех моих трех браузерах не передает.

Возможно, если написать специальный код формирующий этот заголовок и разрешить подобное в crossdomain, то будет передавать, но ведь и злоумышленник то же самое сделает .В таком случае встает вопрос, будет ли флеш-средой форсирована проверка rerefer ?

У кого там передает? выложите файл от сниффера.

alatar
21.03.2012, 21:39
Request URL:http://затерто
Request Method:GET
Status Code:200 OK
Request Headersview source
Accept:*/*
Accept-Charset:windows-1251,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4
Connection:keep-alive
Host:ecma-serv:8080
Referer:http://затерто, но поверьте он есть
User-Agent:Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.79 Safari/535.11

Добавлено через 1 минуту
"Специальный код" не использовался.

Добавлено через 2 минуты
Забудьте вы о crossdomain, он вашей проблемы не решит.

Добавлено через 5 минут
Во всех моих трех браузерах не передает.
Возможно у вас это отключено (http://ru.wikipedia.org/wiki/HTTP_referer) в браузерах?

Добавлено через 8 минут
Каким образом у вас загружается видео?

pwlnw
21.03.2012, 21:52
Действительно зависит от браузера. Кое-где передается.

Меня все-таки смущает что запрос для crossdomain делается непосредственно перед скачиванием. как будто хотели реализовать, но передумали. Или я не знаю как форсировать проверку.

Злоумышленник блокировать передачу referer в своей части страницы или плеере сможет?

alatar
21.03.2012, 21:52
Referer нельзя подделать (http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/flash/net/URLRequestHeader.html) в FlashPlayer.

Добавлено через 1 минуту
Меня все-таки смущает что запрос для crossdomain делается непосредственно перед скачиванием.
Не смущайтесь, он автоматически запрашивается как часть политики безопасности.

pwlnw
21.03.2012, 22:27
Я еще раз проверил - не передают только firefox-ы даже новые 11ый и Opera.
К тому же, имея логи легко посчитать на живом сайте. У моей развлекательной аудитории примерно 26% запросов скачивания не передают referer.
Не заблокировать так подгадить основательно можно. Всем спасибо за мысли.

Добавлено через 1 час 4 минуты
Есть еще идея: на https дополнительные ограничения не накладываются ?