Добрый день! Необходимо запретить прямой доступ к фалам для неавторизованных пользователей сайта. Сам сайт полностью закрыт, попасть на него возможно только после авторизации (после авторизации записываем данные пользователя в $_SESSION). Пользователь может загрузить на сайт свои фалы (картинки, pdf, архивы, word, exelи т.д.). Если знать прямой путь к фалу, то его можно просматривать без авторизации. Как более грамотно защитить фалы пользователя от прямого доступа, но оставить возможность скачать файл авторизованному? Спасибо!
не показывать прямых путей на сайте никому. отдавать файл средствами php по запросу. форму (кнопку, ссылку) запроса скрыть от неавторизованных пользователей.
Это понятно, но допустим, человек подберет путь к фалу... имя_сайта.ру/files/images/1.jpg А можно через htaccess проверить наличие сессии? Если она есть, отдать файл, если нет, то перекинуть на авторизацию.
не используй банальные названия пути к файлам. через htaccess можно только запретить доступ по прямым ссылкам
не отдавайте файлы по прямым ссылкам, а только через скрипт.. загружаемым файлам давайте название что то типа хеша.. в базе храните имя файла и скриптом генерируйте отдачу файла.. там можно сделать и контроль прав доступа..
@Алекс8 слава яйцам на нашем ресурсе есть великолепный человек, которого когда-то давно величали богом рерайтера по вкладу помощи в головы посетителей сего ресурса. И божество рерайтера сейчас тебе претензию глаголить будет: Нахера, сын мой, ты пхп-машину запускаешь для отдачи статического контента, когда эту всю муйню можно переложить на разрешение запроса рерайтером?
журналы веб-сервера уже не котируются? а твой скрипт будет просто ридфайл (только не говори что эхо файл_гет_контентс) или как у нормальных мужиков с блекджеком, шлюхами, рейнджами и докачкой?
А еще лучше - вообще не хранить такие файлы в каталогах, мапящихся на URL. Тогда и подбирать не надо будет ничего - это будет физически невозможно.
ну вот к примеру у меня есть клиент у которого форум где много вложений.. вложения это минусовки для музыкантов, он продает доступ к ВИП разделу, и ему надо контролировать кто что сколько скачал.. лимиты какие то там есть) мой вариант для этого мне кажется подходит))
Хороша ложка к обеду. Просто отдача статики делается сервером без проблем. Хитровыбоенная отдача - средствами PHP. Порой, так действительно проще. И портабельнее. --- Добавлено --- В конце концов, если хостинг на SSD, а отдача идет, скажем, чанками, прочитать пыхой, не ставя блокировку, пару мегабайт, и плюнуть nginx-у в поток - это почти бесплатно и мгновенно. А там уже хоть трава не расти. Главное, если не клиент чанки просит, а ты просто отдачу так дробишь, чтобы, в случае, например, отказа клиента, не продолжать читать крупный файл и повысить отклик, выключай буферизацию вывода в этот момент А то можно с одного запроса оперативку всю просрать и сервер в своп положить. Проверено.
Удивлён, что никто из защитников отдачи файлов пхп-скриптом не сказал про X-Sendfile... Вы все читаете файл пхп-машиной и отдаёте его содержимое веб-серверу, чтоб тот его уже отдал клиенту?
Не помню какой, но косяк с ним был, из-за которого мне пришлось от него отказаться. Ну и как факт, не хочется тащить в проект лишние зависимости от внешнего ПО. --- Добавлено --- Во, как у него с чанками-ренджами нонче?