Запретить прямой доступ к файлам mp3 / wav, одновременно позволяя флеш-плееру получать к ним доступ с помощью .htaccess (или PHP) - PullRequest
6 голосов
/ 04 августа 2010

Как запретить прямой доступ / скачивание к файлам mp3 / wav, одновременно позволяя флеш-плееру получать к ним доступ с помощью .htaccess (или PHP)?Я искал решение с только частичными и неработающими решениями для моих усилий.

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

< Files ~ ".*\..*"><br />
order allow,deny<br />
deny from all<br />
< /Files>

Приведенное ниже решение на первый взгляд показалось великолепным, поскольку оно не позволяло людям просматривать файлы в каталоге, но если пользовательзнает точный URL-адрес музыкального файла, они могут загрузить его:

SetHandler application/x-httpd-php<br />
SetHandler application/x-shockwave-flash

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


Если это не безопасный метод, может кто-нибудь предложить безопасныйи относительно простой способ реализации этой функции ограничения?URL-адреса и примеры будут очень полезны

PS Это сайт WordPress, поэтому я буду использовать PHP в качестве языка программирования для реализации любого решения.

PS Глядя, чтобы блокировать загрузку новичков, а НЕ хакеров / взломщиков / интернет-волшебников.

Ответы [ 4 ]

8 голосов
/ 04 августа 2010

Поскольку PHP доступен, используйте его для защиты файлов. Не помещайте их в корневой каталог, а где-нибудь, доступное для PHP. Затем сгенерируйте одноразовый URL, например:

<?php
  $unique = md5( uniqid() );  // 32 hex characters
?>

Затем сохраните это уникальное значение в сеансе / сервере / БД и попросите другую страницу проверить уникальную строку перед передачей файла:

<a href="streamer.php?id=6dd4566eb245627b49f3abb7e4502dd6">Stream Me</a>

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

3 голосов
/ 04 августа 2010

Как указывает The Rook, вы не можете иметь это в обоих направлениях. Вы не можете одновременно предоставлять и не предоставлять своим пользователям доступ к вашим данным. Независимо от сложности вашей схемы аутентификации, компетентные пользователи всегда смогут ее обойти, потому что для работы Flash Player у них должны быть учетные данные. Лично я считаю, что правильное решение - признать, что вы не можете помешать определенному пользователю сохранить ваш контент, и просто позволить ему. Если вы настаиваете на том, чтобы сделать его более сложным, то какое решение вам подходит, будет зависеть от того, с каким сегментом пользователей вы хотите быть эффективными, и сколько работы вы готовы потратить на реализацию.

Простым решением было бы генерировать одноразовый ключ каждый раз, когда вы обслуживаете страницу просмотра, а затем обслуживать контент через PHP-скрипт, который его проверяет. Таким образом, пользователь, по крайней мере, должен загрузить страницу просмотра для содержимого, которое он хочет, и изучить его источник, чтобы извлечь ключ, а не просто поместить URL-адрес в адресную строку своего браузера. Однако, если ваш сайт станет популярным, кто-то, вероятно, сделает доступным скрипт, который делает это автоматически. Например, см. youtube-dl , скрипт Python, который загружает видео с YouTube.

В своем посте вы упоминаете пароль, защищающий файлы с помощью Apache. Возможно, приложение Flash Player может отправить HTTP-аутентификацию, но я сомневаюсь, что любые существующие плееры поддерживают ее, и для ее модификации потребуются как источники, так и опыт работы с ActionScript. Любое решение, которое выдержит такие тривиальные атаки, как чтение исходного кода, может потребовать модификации проигрывателя.

0 голосов
/ 26 июля 2012

Есть еще одно решение, опробованное и довольно успешное: загрузите песню в <iframe>.Прямой доступ к песне будет ограничен в коде PHP.

0 голосов
/ 04 августа 2010

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

Единственное, что вы можете сделать, это поднять планку и предотвратить прямые ссылки на ваш контент.Вы можете сделать это с помощью PHP, чтобы ограничить доступ к медиа.Поместите все носители за пределы веб-корня или защитите каталог с помощью .htaccess deny from all.Пусть приложение flash сначала отправит «запрос на загрузку», предоставьте приложению flash временный одноразовый токен ( cryptographic nonce ).Этот токен затем используется в следующем запросе для загрузки музыки из файла PHP.Это легко обмануть, но это лучшее, что ты можешь сделать.

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