Я использую устаревшие URL-адреса, чтобы скрыть URL-адреса изображений, которые я использую на своих сайтах, так что они могут быть только горячесвязаны на весь срок службы хэша (1 час).
Я проверяю хэш, отправленный с URL-адресом файла, против хэша на сервере, если они совпадают, скрипт вызывает следующий код:
if (isset($_GET["hash"])) { $this_min = date('Ymd-g',time()) . "salt" . $vid_id; $current_hash = substr(md5($this_min),0,12); $submitted_hash = mysql_real_escape_string($_GET["hash"]); if ("$current_hash" == "$submitted_hash") { $file_url2 = "directory/" . $vid_file; header('Content-Type: application/octet-stream'); header("Content-Transfer-Encoding: Binary"); header("Content-disposition: inline; filename=\"".md5($vid_file)."\""); readfile($file_url2); exit; } else { $_SESSION["message"] = "Download link expired, refresh the page and try again"; $_SESSION["message_type"] = 0; header("Location:" . $_SERVER['HTTP_REFERER']); exit; } }
Я использую это в теге (например, <img src="index.php?id=123&hash=ew6rg5reg4">
и он отлично работает. Если изображение hotlinked, оно перестает работать, когда хеш изменяется, каждый час (или если это необходимо). К сожалению, этот же метод не работает, когда я использую его для загрузки файлов .flv в флеш-плеер, например, JW-плеер. Файл .flv загружается.
В любом случае, я могу исправить это или сделать то же самое с альтернативным методом?
Вы действительно не можете скрыть URL загрузки очень эффективно. Safari, например, предоставляет все ресурсы, загруженные через окно Activity. Просто найдите элемент с размером MB, и это ваш FLV-файл.
Единственный способ удержать людей от копирования ваших FLV – использовать RTMP-потоки, где они никогда не получают доступ к полному файлу.
вы можете остановить источники, отличные от вашего домена, с помощью htaccess fils (только для сервера Apache)
RewriteEngine On Options +FollowSymLinks <ifmodule mod_rewrite.c> RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(www\.)?yourdomain.com/.*$ [NC] RewriteRule \.(gif|jpg|png|mp3|mpg|avi|mov|flv)$ - [F] </ifmodule>
Было бы интересно узнать, какая ошибка во время выполнения скрипта игрока?
У вас может быть больше шансов заставить его работать с типом MIME, установленным на видео / x-flv или flv-application / octet-stream .
Он должен отлично работать с JW-плеером и т. Д.
Некоторые серверы, например nginx, имеют модули, которые очень эффективно выполняют такую проверку, поэтому вам не нужно делать это на PHP.
Единственный способ по-настоящему ограничить доступ к файлам flv – это реализовать некоторый король ACL на сервере, на котором находится файл или потоковому. Я использую Wowza Media для потоковой передачи видео в реальном времени, и на сервере реализовано несколько механизмов защиты ваших файлов / потоков: аутентификация на основе ACL, StreamNameAlias …