Как ограничить доступ пользователей к файлу на HTTP-сервере? - PullRequest
0 голосов
/ 16 декабря 2009

Я пишу веб-приложение, которое позволяет пользователю загружать свои файлы в приложение. Файл будет загружен на HTTP-сервер, после того как пользователь нажмет кнопку «Загрузить». Пользователь может получить файл, получив файл по пути .... ... например: http://www.demo.com/user/abc/download/the_file.jpg

но я обнаружил, что все люди могут получить доступ к этому файлу, используя путь. Как я могу это сделать, или есть лучший способ управления файлом, который может загрузить файл только зарегистрированный пользователь или владелец файла?

Ответы [ 2 ]

1 голос
/ 17 декабря 2009

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

Лучший вариант - использовать модуль Apache mod_xsendfile . Идея состоит в том, чтобы перенаправить все запросы на Скрипт PHP / Perl / Python, который просто устанавливает заголовок HTTP, говорящий " Эй, Apache, вместо этого подай этот файл ", и mod_xsendfile позаботится об этом.

И клиент никогда не сможет загрузить файл без этой аутентификации.

1 голос
/ 16 декабря 2009

Если вы используете что-то вроде apache httpd, вы можете использовать файлы .htaccess и иметь каталоги, которые предоставляются пользователям или группам, если вы хотите, чтобы пользователь продолжал получать доступ к файлам по пути в файловой системе.

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

Я склонен использовать сценарий, так как он дает мне больше контроля над управлением разрешениями и более сложными сценариями доступа.

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