Защита от скачивания мп3 с других сайтов

Тема в разделе "Как сделать...", создана пользователем jusuf, 28 мар 2015.

  1. jusuf

    jusuf Бывший модератор

    Регистр.:
    3 апр 2006
    Сообщения:
    329
    Симпатии:
    199
    У меня ест сайт с мп3 музыкой , и часто к моим серверам подключаются чужие сайты , то ест ставят линьки скачки на мой сервер.
    Пробовал блокировать по рефферу , но на некоторых устройствах бывает не переедается реффер или переедается не корректно .
    Вопрос как лучше сделать ? Передавать методом гет или пост ключ ? или какой то временной токен генерировать ?
     
  2. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.175
    Симпатии:
    2.195
  3. jusuf

    jusuf Бывший модератор

    Регистр.:
    3 апр 2006
    Сообщения:
    329
    Симпатии:
    199
    но в новом открытом окне будет работать, хотлинк блше на картинки
     
  4. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.175
    Симпатии:
    2.195
    Окай, делай mp3.php, который будет отдавать файлики mp3. Дальше при входе на сайт пихаем сессию true - если при скачке она есть, отдаём файл...

    Глобально можно на nginx сделать...
     
    latteo нравится это.
  5. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.517
    Симпатии:
    1.365
    Подход правильный, но защита от нубов :)
    Это ужасно, но все музыкальные скрипты, что я видел и так отдают на php :(
     
    Горбушка и jusuf нравится это.
  6. braindancer2

    braindancer2 Создатель

    Регистр.:
    14 мар 2014
    Сообщения:
    14
    Симпатии:
    5
    Вот пример конфигурации nginx для защиты от хотлинкинга. Его очень просто можно исправить для .mp3 или любого другого контента. Перейти по ссылке
     
  7. jusuf

    jusuf Бывший модератор

    Регистр.:
    3 апр 2006
    Сообщения:
    329
    Симпатии:
    199
    braindancer2 твой метод тоже проверяет по рефферу :) Я сделал по другому привязку по ип пользователя.

    PHP:
    //создаем ключ на главном сервере 
    $ip $_SERVER["HTTP_X_FORWARDED_FOR"];
    $key =  md5($ip.'key');
    //ссылка получается такова вида 
    //http://site.ru/file.php?q=333_333&key=6bc0b74d9a9755701cea72602dcb38a3/

    //На сервере скачивания вот такая функция проверки 
    $ip $_SERVER["HTTP_X_FORWARDED_FOR"];
    $key preg_replace("#/$#"""$key);
    if (
    $key == md5($ip.'key')){
    //Одаем  песню 
    }else{
    //Редиректим пользователя на наш сайт где ест ссылка на скачивание песни 
    }
    Правда ест одна проблема засчита срабатывает на телефонах андроид в брузере хром , проверяли там запросы идут через гоогле прокси сервера
     
  8. braindancer2

    braindancer2 Создатель

    Регистр.:
    14 мар 2014
    Сообщения:
    14
    Симпатии:
    5
    Ну так если ты все же решил через PHP делать, то делай через сессию. Если кто-то пытается скачать файл через твой скрипт и переменная твоя в сессии или сама сессия не валидная - редиректи его на страницу свою, где заново создашь для него сессию и переменную.

    <?php session_start(); $_SESSION['myvisitor'] = true;

    Не думаю, что иедя md5ить IP хороша, особенно учитывая повсеместное использование NATов у ISP.
     
  9. jusuf

    jusuf Бывший модератор

    Регистр.:
    3 апр 2006
    Сообщения:
    329
    Симпатии:
    199
    вопрос а сессия передаетса на субдомен ?
     
  10. braindancer2

    braindancer2 Создатель

    Регистр.:
    14 мар 2014
    Сообщения:
    14
    Симпатии:
    5
    ID сессии хранится либо в урле параметром (что не правильно) или в куки. Куки привязываются к домену и пути. Я думаю поскольку в php.ini у тебя можно задать основной домен как куки домен для сессии - проблем быть не должно. В любом случае нужно протестировать.

    session.cookie_domain = 'твойдомен.тлд'

    ^^ в php.ini или в .htaccess или ini_set()

    Вот здесь опять же обсуждение этой темы: Перейти по ссылке