Как скрыть URL-адрес файла .flv во флеш-плеере? - PullRequest
2 голосов
/ 17 февраля 2009

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

Я проверяю хеш, отправленный с URL-адресом файла, по хешу на сервере, если они совпадают, скрипт вызывает следующий код:

if (isset($_GET["hash"])) {
        $this_min = date('Y-m-d-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">, и он отлично работает. Если изображение имеет горячую ссылку, оно перестает работать при изменении хэша каждый час (или минуту, если необходимо). К сожалению, этот же метод не работает, когда я использую его для загрузки файлов .flv во флэш-плеер, такой как проигрыватель JW. Файл .flv не загружен.

Каким образом я могу это исправить или добиться того же с помощью альтернативного метода?

Ответы [ 5 ]

2 голосов
/ 18 февраля 2009

Вы не можете действительно эффективно скрыть URL загрузки. Например, Safari предоставляет все ресурсы, загруженные через окно «Активность». Просто найдите элемент размером в МБ, и это ваш FLV-файл.

Единственный способ удержать людей от копирования ваших FLV-файлов - это использовать потоковую передачу по протоколу RTMP, где они никогда не получат доступ к полному файлу.

1 голос
/ 18 февраля 2009

вы можете остановить рефереры, отличные от вашего домена, с помощью файлов htaccess (только для сервера 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>
0 голосов
/ 18 марта 2009

Единственный способ действительно ограничить доступ к FLV-файлам - это внедрить некоторый король ACL на сервере, где файл находится или для которого передается поток. Я использую Wowza Media для потокового видео в реальном времени, и на сервере реализовано несколько механизмов для защиты ваших файлов / потоков: аутентификация на основе ACL, StreamNameAlias ​​...

0 голосов
/ 18 февраля 2009

Должно работать и с плеером JW и т. Д.

Некоторые серверы, например, nginx, имеют модули для очень эффективной проверки, поэтому вам не нужно делать это в PHP.

0 голосов
/ 18 февраля 2009

Интересно было бы узнать, какую ошибку во время выполнения выдает скрипт игрока?

У вас может быть больше шансов заставить его работать с типом MIME, установленным на video / x-flv или flv-application / octet-stream .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...