Как сделать встроенные видео доступными только для определенного плеера


Я пытаюсь понять, как сделать встроенное видео доступным только для определенного проигрывателя. Вот контекст:

У меня есть веб-сайт, на котором размещены видео для потоковой передачи. Все видео являются частными. Мои клиенты хотели бы иметь возможность сгенерировать фрагмент кода для встраивания, который позволил бы ему опубликовать это видео на любом сайте, который он пожелает. (в конечном счете это означает, что видеопоток больше не является частным, а теперь стал общедоступным).

Теперь это самая сложная часть. Клиент не хочет, чтобы эти видео можно было сканировать по их URL-адресам, что означает, что если URL-адрес видео http://my.domain.com/videoToken , любые боты/пользователи/программы, попавшие по этому URL-адресу, не увидят видео, однако игроку необходимо загрузить видео с этого же URL-адреса.

Кто-нибудь знает, какие безопасные варианты у меня есть для реализации этого? Существуют некоторые решения DRM, могут ли они помочь в этом случае использования?

Заранее благодарю.

PS: если это невозможно по какой бы то ни было причине, что является ближайшей ближайшей вещью?

Author: D.Mill, 2016-06-29

3 answers

Просто чтобы прояснить ситуацию, ваш клиент, похоже, хочет;

  1. Чтобы иметь возможность вставлять свои видео на произвольные веб-страницы и успешно загружать их, в то время как
  2. Что делает невозможным для произвольных пользователей загружать/просматривать те же самые видео по URL-адресу.

Эти два требования по своей сути противоречат друг другу. Любой встроенный код/элемент должен будет отправить запрос на ваш сервер из браузера клиента, поэтому вы не сможете определить, поступает ли данный запрос от пользователя, загружающего встроенное видео, или бота/скрипта/пользователя, пытающегося загрузить контент непосредственно с URL-адреса. Метод, предложенный @ernestortiz, не позволит случайно просматривающему пользователю и веб-сканерам наткнуться на ваши видео (если у вас есть белый список разрешенных рефереров, но это совершенно другая проблема), но не злонамеренный пользователь, скорее всего, никогда случайно не наткнется на ваши видео, и не злонамеренный бот будет уважать ваши видео. robots.txt . Злоумышленник может просто подделать свои заголовок ссылки, и вредоносный бот может быть легко настроен на то же самое.

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

 2
Author: F. Stephen Q, 2016-07-05 18:22:22

Что, если мы поместим что-то похожее на следующее в файл .htacces?

<IfModule mod_rewrite.c>
 RewriteEngine on
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?my.domain\.com/.*$ [NC]
 RewriteRule .*\.(mp4|avi)$ http://www.my.domain.com/forbidden.mp4 [R,NC,L]
 # or serve a standard 403 forbidden error page
 # RewriteRule .*\.(mp4|avi)$ - [F,L]
</ifModule>

Возможно, это не решение, но идея использования mod_rewrite для управления доступом к видео на основе HTTP_REFERER может быть разработана.

 2
Author: ernestortiz, 2016-07-05 02:32:10

Я не могу понять, как заблокировать запрос по вашему выбору, если у вас нет черного списка, но у вас может быть скрипт, который добавляет/изменяет некоторые параметры, поэтому URL-адрес не является полным, когда бот удаляет сайт с кодом вставки.

Я привел пример с YouTube:

JS

$('#embed').click(function(e){
  e.preventDefault();

  $(this).remove();

  var src = $('iframe').attr('src');

  $('iframe').attr('src', src + 'OAxm_GSM7L4?autoplay=1');

});

HTML

<div id="player">
<div id="embed"></div>
<iframe width="420" height="315" src="https://www.youtube.com/embed/" frameborder="0" allowfullscreen></iframe>
</div>

Демонстрация https://codepen.io/anon/pen/bZAvYZ

 2
Author: stig-js, 2016-07-07 17:34:11