Ограничение доступа к файлам через http

Discussion in 'PHP' started by Егорыч+++, 3 May 2006.

  1. Talisman

    Talisman Elder - Старейшина

    Joined:
    22 Apr 2006
    Messages:
    400
    Likes Received:
    151
    Reputations:
    80
    а задержка в 12 часов или менеее/более?
     
  2. censored!

    censored! Green member

    Joined:
    2 Nov 2004
    Messages:
    1,159
    Likes Received:
    299
    Reputations:
    156
    Отвечал, имея в виду - если после каждого запроса переименовывать файл, и давать на него ссылку.

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

    Можно и предупредить - "не скачаешь в ближайший час - идешь лесом"

    А файлы большие? Если мелкие - то сразу скачают после запроса на скачку, если фильмы какие-нить - то да. Многие за сутки не выкачают.

    Ну еще как вариант - это найти место где есть поддержка htaccess =)

    Или: заряжаешь архив с файлами троем, при запуске трой стучиться на сервер. Как трой стукнулся - файл можно удалять =))))))
     
    _________________________
    #22 censored!, 3 May 2006
    Last edited: 3 May 2006
  3. EST a1ien

    EST a1ien Elder - Старейшина

    Joined:
    2 Apr 2006
    Messages:
    249
    Likes Received:
    48
    Reputations:
    16
    А мой выриант чем неподходит??
     
  4. Trinux

    Trinux Members of Antichat

    Joined:
    26 Nov 2004
    Messages:
    1,403
    Likes Received:
    296
    Reputations:
    364
    Можно сделать как сделано на slil.ru. Сурсы дать не могу занимимением. Но рассказать как работает можно. там стоит опять же связка nginx+fast-cgi, которую я так люблю хвалить. nginx получает ссылку на архив с каким-то хешем. Передает его php. php сверяет хеш и есл все верно - посылает заголовок nginx`у (обычным header()) и тот отдает файл. Если хеш не сошелся - php ехит ошибку.
    Сервис известнй и пользуют его многие. Благодаря данному хитрому но до ужаса простому антиличу стоит на обычном Celeron`е.
     
    _________________________
  5. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    727
    Reputations:
    266
    я его раньше предложил )
    но он оперативу жрет неслабо )
     
  6. EST a1ien

    EST a1ien Elder - Старейшина

    Joined:
    2 Apr 2006
    Messages:
    249
    Likes Received:
    48
    Reputations:
    16
    Сори я просто не знал что это так называется
     
  7. max_pain89

    max_pain89 Eat `em UP!

    Joined:
    11 Dec 2004
    Messages:
    451
    Likes Received:
    140
    Reputations:
    146
    А можно так.
    При инициативе пользователя скачать файл создается папка с названием типо хеша, и двумя файлами .htaccess и bublik.zip.
    Аксес с текстом
    <Files "bublik.zip">
    AddType application/x-httpd-php .zip
    </Files>

    А пхп с миниавторизацией

    <?php
    if($_COOKIE[login]="Vasya" & $_COOKIE[sess]="cae6dac72fd4aw73f6ede7a1c6e7adaf") // ну или от форума прикрутить
    {
    разрешено скачивать // ну функция скачивания из хранилища с DENY FROM ALL (outside)
    } else {
    echo "Пошел вон";
    }
    ?>
     
    1 person likes this.
  8. Talisman

    Talisman Elder - Старейшина

    Joined:
    22 Apr 2006
    Messages:
    400
    Likes Received:
    151
    Reputations:
    80
    идея хорошая, но а если шттаксесса нет, и кукисов тоже? (довнлоад-менеджер???)
     
  9. Егорыч+++

    Staff Member

    Joined:
    27 May 2002
    Messages:
    1,373
    Likes Received:
    894
    Reputations:
    20
    Несовсем понял причем тут nginx. НА апаче разве тут нельзя сделать также?
     
  10. max_pain89

    max_pain89 Eat `em UP!

    Joined:
    11 Dec 2004
    Messages:
    451
    Likes Received:
    140
    Reputations:
    146
    без аксесса можно обойти создавая download.php

    Ну а куки не знаю. В ReGet есть поддержка кукисов, боюсь что только Ослинных.
     
  11. Trinux

    Trinux Members of Antichat

    Joined:
    26 Nov 2004
    Messages:
    1,403
    Likes Received:
    296
    Reputations:
    364
    2 Егорыч+++
    нет, если делать через апач, файл будет отдавать php, а не веб-сервер. Там все внутри одной сессии. nginx получает запрос, отдает php на обработку и далее уже php либо отдает приказ nginx`у комманду на отдачу файла, либо извещает о ошибке. Не знаю как это реально реализовать на apache.

    Еще способ простой. Есть дира с именем, к пример, "8v9erjh9ver" и файл, в котором хронится адрес этой диры. Раз в 5 минут меняется имя диры и инфа в файле. В итоге можно будет скачать файл только через интерфейс + файл будет отдаваться веб-сервером, не сжирая ресурсы сервака. Тоже реалиховывал - работает как часы. Даже если имя диры меняется во время скачки файла - хедеры уже открыты и открытые докачаются. Удобно. Но есть проблема - если таким образом реализовывать файлообменник, на закачанный файл нельзя будет поствить пароль. Точнее можно, но обойти защиту пароля будет легко
     
    _________________________
  12. Talisman

    Talisman Elder - Старейшина

    Joined:
    22 Apr 2006
    Messages:
    400
    Likes Received:
    151
    Reputations:
    80
    можно еще менять доменные имена... тупо :)
    типа n1.m24.fer.ru :)
     
  13. k1b0rg

    k1b0rg Тут может быть ваша реклама.

    Joined:
    30 Jul 2005
    Messages:
    1,182
    Likes Received:
    399
    Reputations:
    479
    если файл находиться в базе, то можно сделать так
    в базе разграничить юзеров по группам.
    Сделать рандомную ссылку, по которой юзеры будут качать файл. Если другой юзер зайдет по этой сцылке, то естесна файла уже по ней не будет. Сделать просто одноразовую сцылку. Если по ней скачали, то она пустеет. Каждому другому юзеру будет генерироваться своя.
    В принципе это не так сложно реализовать
     
  14. Talisman

    Talisman Elder - Старейшина

    Joined:
    22 Apr 2006
    Messages:
    400
    Likes Received:
    151
    Reputations:
    80
    только вот нагрузка будет не на фтп сервер а на апач основная и на базу... чего не очень то бы и хотелось!
     
  15. Trinux

    Trinux Members of Antichat

    Joined:
    26 Nov 2004
    Messages:
    1,403
    Likes Received:
    296
    Reputations:
    364
    Файл а базу? Бугага =))) прощай БД =))))))))) простите, если кого обидел. Подобные вещи надо бы знать. Реляционные БД не преднозначены для хронения в них бинарных данных =) для этого есть файловая система =)
     
    _________________________
  16. Егорыч+++

    Staff Member

    Joined:
    27 May 2002
    Messages:
    1,373
    Likes Received:
    894
    Reputations:
    20
    не нравится мне ничего из того что предложили .. завтра сам напишу...
     
  17. Trinux

    Trinux Members of Antichat

    Joined:
    26 Nov 2004
    Messages:
    1,403
    Likes Received:
    296
    Reputations:
    364
    очень даже верно =)
     
    _________________________
  18. k1b0rg

    k1b0rg Тут может быть ваша реклама.

    Joined:
    30 Jul 2005
    Messages:
    1,182
    Likes Received:
    399
    Reputations:
    479
    >>Файл а базу? Бугага =))) прощай БД =))))))))) простите, если кого обидел. Подобные вещи надо бы знать. Реляционные БД не преднозначены для хронения в них бинарных данных =)

    ну а где же форумы хранят файлы? допустим булка?
     
  19. x_Lex

    x_Lex Elder - Старейшина

    Joined:
    8 Jan 2005
    Messages:
    185
    Likes Received:
    118
    Reputations:
    171
    если интерестно виложу
    _http://www.vibralogix.com/linklokcb/
     
  20. Trinux

    Trinux Members of Antichat

    Joined:
    26 Nov 2004
    Messages:
    1,403
    Likes Received:
    296
    Reputations:
    364
    Неужели в БД =)))))) Если это так, укусити меня за яйцо =)))
    тормоз всех реляционных БД - текстовые поля. Любое поле типа TEXT\BLOB в таблице будет ее сильно тормозить. А как БД относятся к бинарникам, я вообще молчу =) Это вы хотите 5 метров, допустим, из БД тянуть обним запросом? Приятно =))))))
     
    _________________________