Защита контента в html5
Есть видео-сайт. Прямые ссылки на видео - его главное преимущество, но для удовлетворения собственного эго хочу узнать как можно было бы защищать контент в теге <video>
Идея номер раз:
Сделать отдачу видеофайла через php скрипт. Т.е. так как будто это и есть само видео. Сделал по примитивному: отправил заголовки, отправил длину контента и после этого отправил файл побайтно.
Есть 2 недостатка:
1). В Chrome не работает, потому что невообразимым образом хром поддерживает http стримминг если просто положить видео на сервер (как файл), это при том что я никаких модулей для этого не устанавливал, и поэтому обычного стандартного заголовка ему недостаточно, нужно еще что-то.
2).Работает в safari и mozilla (c установленным quicktime) но только когда полностью загрузится, т.е. плеер ждет пока видео загрузится, а потом воспроизводит его.
Значит первый вопрос:
как создать такой скрипт что-бы он был неразличим от обычного mp4 файла?
чем посмотреть ПОЛНЫЕ пакеты с заголовками?
И может кто знает как обменивается хром с сервером ? Даже если он отправляет минуту и секунду на которые хочет перейти пользователь то сервер ведь минут и секунд не понимает, ему надо преобразовать его в байт а потом отдать ведь, - повторюсь модуля для этого не устанавливал.
В итоге вы сами себе создаете иллюзию защищенности, простую вещь делаете ректальным способом и еще нам на форуме задаете глупые вопросы.
Защитить вам ничего не удастся, поэтому расслабтесь и просто кладите файл как он есть.
В итоге вы сами себе создаете иллюзию защищенности, простую вещь делаете ректальным способом и еще нам на форуме задаете глупые вопросы.
Защитить вам ничего не удастся, поэтому расслабтесь и просто кладите файл как он есть.
Что непонятного??
Может быть название темы несколько вызывающе.
Понятно что файл хранится в кеше, мне то уже не интересно найдет ли его пользователь на своем компьютере, мне интересно давать не прямую ссылку на видео, а типа такую:
my-site.com/stream.php?id=8923
Для того чтобы перед ним показать рекламу. Повторяю это только интерес. Помимо гребаной рекламы можно показывать что-то еще, то что не будет отвергать пользователя.
Понятно что в любом случае его можно скачать.
А глюки наверно из-за того что для корректного воспроизведения желательна поддержка partial content и гдето намудрено с content-length. Поставь firebug и посмотри заголовки.
Ну представь ситуацию: пользователь заходит на мой видео-сайт (который в подписи), видит видео, смотрит в исходный код и видит прямую ссылку на видео и думает - а не создать ли мне свой сайт для фильмов? Создает какой нибудь movie.com и встраивает видео, а с нас берез тока прямую ссылку. В итоге нагрузка на сервер 75%..
Нет рекламу я показывать не буду, есть идеи поинтересней.
В контексте стартового топика очень забавно звучит.
чем посмотреть ПОЛНЫЕ пакеты с заголовками?
Эта группа ПО называется "снифер". Wireshark в руки и вперед реверс инжинирингом заниматься.
При запросе создаете временную папку (допустим, 1a2b3c), в неё помещаете symlink на видео файл (100500.flv).
Пользователю отдавайте только адрес /video/1a2b3c/100500.flv
Периодически очищайте данные папки (раз в час или как угодно, в зависимости от задач)
Периодически очищайте данные папки (раз в час или как угодно, в зависимости от задач)
Если вы имели ввиду таким образом защитится от встраивания то мне не подойдет ибо в видеохостинге тогда нет смысла )))
Ладно, буду думать, может прийдет идея поинтересней =)
Что вы понимаете под защитой от встраивания? Как раз мой метод позволит хотя бы потому, что скрывает реальную ссылку на файл. А там уже можете nginx ставить и ограничивать хоть скорость закачки, хоть по странам фильтровать, хоть ещё что-то.
Что вы понимаете под защитой от встраивания? Как раз мой метод позволит хотя бы потому, что скрывает реальную ссылку на файл. А там уже можете nginx ставить и ограничивать хоть скорость закачки, хоть по странам фильтровать, хоть ещё что-то.
C чего вы взяли что я хочу запретить встраивание?? Я наоборот только за. Единственный мой был вопрос это то как отдать файл через скрипт так что бы при вызове этого скрипта он был неотличим для браузера от прямой ссылки на видео.
У каждого свои подходы, я также могу сказать что ламерство это создавать еще один файл в темповой директории потому что:
1) Копирование файла вызовет туже а может еще и большую нагрузку на сервер (видео может быть и 1 Гб а может быть и 4Гб)
2). Это наихудший вариант для диска - фрагментация обеспечена! Отсюда и скорость со временем уменшится
3). Зачем клонировать файлы? А если видео одно и тоже будут смотреть несколько человек?
4). Это также не решает мой вопрос, сегодня встраивание работает а завтра нет, - повторюсь я не против встраивания, просто перед\в середине\после мне нужно показывать НЕ рекламу а нечто очень похожее на нее, но только тогда когда видео встроенное. Пользователь может выбирать плеер сам (html5/flash) поэтому просто плеером решить такую задачу не подходит.
Чем сложнее система - тем она ненадежней. Все должно быть просто и изящно. Я не одобряю решения тривиальных задач на основе кучи ненужных программ.
P.S. Что вы понимаете под защитой от встраивания - см. п.4
никаких копий файлов не создаётся
бтв, в вашем первом топике вы спрашивали о защите, а не как отдать через скрипт)) более того, скрипт вы придумали сами)) ваш вопрос был а) как создать такой скрипт что-бы он был неразличим от обычного mp4 файла?
вам ответили - создать симлинк) посмотрите как ifolder отдаёт файлы, например) у него ссылка на каждого скачивающего своя, с проверкой ипа и всеми плюшками, действительна только на час) вы наивно полагаете, что он создаёт копии файла, кладёт их в папочку каждому пользователю??
б) чем посмотреть ПОЛНЫЕ пакеты с заголовками?
вам ответили, смотрите фаербагом в фоксе
в) И может кто знает как обменивается хром с сервером ?
как и любой другой браузер.. http://ru.wikipedia.org/wiki/HTTP
простите, это nginx - ненужная программа?? а сервер у вас на чём, апач стоит?? может ещё под виндой? )) прощайте, я одной своей домашней сеткой весь ваш сервер положу
бтв, надёжность систем определяется не сложностью (точнее не столько сложностью), а тем как интегрированны компоненты) к тому же есть ещё отказоустойчивость и доступность)
з.ы. если вам надо показывать что-то посередине видео - то его только перекодировать.. любой adblock вырежет все ваши попытки организовать любые всплывающие дивы поверх video
Я сам делал когда-то файлообменник, который так работал и до сих работает - встроить видео пока что никто не может. Почему? Потому что ссылка на скачивание живет N количество часов.
А если уж так упорно хотите контент отдавать криптом и не можете побороть хром - то берите сниффер. Попробуйте посмотреть какие заголовки отдает веб-сервер (когда видео работает) и какие ваш скрипт. Да тут и сниффер не нужен - можно наваять простенькую программу за 5 минут для чтения заголовоков.
И помнить - скрипт полностью висит в памяти. Т.е. будет у вас 1000 онлайн просмотров - будет 1000 скриптов висеть и побайтово читаться. Вы очень быстро таким образом положите сервер. Послушайте людей. nginx и прочее придумали не просто так. С вашей простотой ещё больше проблем себе наберете.
Признаю, поспешил, посмотрел на адрес который дали вы /video/1a2b3c/100500.flv и сразу в голову недоброе полезло =)
Ок, спасибо всем.
Ответ у меня на них простой: хочешь защитить контент — не выкладывай его в сеть. Если что-то должно воспроизводиться в браузере — защитить это невозможно.
Дополнительное правило, навеянное книгами о стартапах и личным опытом: не бойся воровства контента. Если контент уникальный и стоящий — это и есть лучшая защита.
Ещё вдогонку — DRM.
А почему не использовать, например .htaccess и HTTP_REFERER или nginx-реализации ???
Наверняка же HTML5 отдаётся реферер, откуда получена ссылка...
Если реферер не соответствует нашему родному сайту - досвидос...
Что, хотлинкинг никто не рубил???
http://ru.wikipedia.org/wiki/%D0%A5%D0%BE%D1%82%D0%BB%D0%B8%D0%BD%D0%BA
Или я опять не в тему и мне обратно в школу?
А почему не использовать, например .htaccess и HTTP_REFERER или nginx-реализации ???
Наверняка же HTML5 отдаётся реферер, откуда получена ссылка...
Если реферер не соответствует нашему родному сайту - досвидос...
Что, хотлинкинг никто не рубил???
http://ru.wikipedia.org/wiki/%D0%A5%D0%BE%D1%82%D0%BB%D0%B8%D0%BD%D0%BA
Или я опять не в тему и мне обратно в школу?
Я бы сказал не в школу, а на практику.
Потому что проверка referer и вынесение решения "досвидос" только по нему ставит палки в колеса обычных пользователей и совершенно не защищает контент. Обычный пользователь слыхом не слыхивал про referer и даже не знает, где это у него и в каком виде. И вполне может от него на сервер не приходить. К примеру, да, как указал RussianSpy заголовок может резать фаер/антивирусь, а конечный пользователь ни в зуб ногой. И у него проблемы.
А другой стороны те, кто сайты парсит. И им это referer, прозрачный gif и документ в jpeg/png/etc в виде back-ground-а к элементу и даже пресловутый AJAX, все это глубоко по барабану. Я, к примеру, всегда referer шлю при парсинге, и HTML/CSS код смотрю и Firebug-ом гляжу что и куда шлется при AJAX и ничуть мне это палки в колеса не ставит.
Собственно именно поэтому и существует выкладывание в паблик материалов в плохом качестве. Потому что даже скачав его вытянуть что-то полезное затруднительно. Для текста делают такого качества, что бы ни одна OCR распознать с вменяемым уровнем ошибок не могла.
Извините... Пошел курить HTTP
Извините... Пошел курить HTTP
Это касается не только HTTP. А практически всего. К примеру, многие воспринимают то же сетевой стек TCP/IP как некий незыблемый столп. Между тем ни чего не мешает в IP пакете указать не свой адрес, а левый. Получаем атаку IP spoofing. Комп работает только с единицами и нулями, поэтому можно сформировать любую последовательность из оных.
P.S. Пока стандарты и протоколы жили в стенах вузов и военных учреждение не так уж сильно требовалось противостоят умышленной порче данных, слой безопасности был больше обусловлен техническими проблемами (сбои, коллизии). Но когда это вылилось в мир в виде интернета, то оказалось, что "ой, млять, и тут можно так вставить, о, а тут так, а вот тут вот так". Так что большая часть взломов это отголоски первоначальной архитектуры.
Имеет смысл бороться со конкретными случаями воровства контента, но здесь даже обсуждать нечего. Только грабли/велосипеды изобретать :)
Имеет смысл бороться со конкретными случаями воровства контента, но здесь даже обсуждать нечего. Только грабли/велосипеды изобретать :)
Кстати о граблях и велосипедах :) - можно отказаться от тега <video> и использовать свой flash-плееер с шифрованием данных и частичными функциями данлоад-манагера :D
Шифрование видео потока на лету? Ну-ну. А теперь давайте посчитаем какой мощности нужны сервера чтобы обслуживать ну хотя бы 1000 пользователей единовременно.
Ну это я к граблям и велосипедам :)
низя... Просмотр должен быть доступен на iphone и ipad
можно отказаться от использования iphone и ipad :D