Запретить список каталогов и файлов для конкретного пользователя - PullRequest
1 голос
/ 28 сентября 2011

У меня есть папка (/ files), и у меня есть тонны файлов, которые пользователи могут загрузить. Я хочу, чтобы пользователи могли загружать только свои файлы и не видеть файлы других людей.

Например:

Пользователь A может только просматривать и загружать:

- file1.doc
- file2.jpg

Пользователь B может только просматривать и загружать:

- file3.txt
- file4.jpeg

Пользователь C может только просматривать и загружать:

- file1.doc
- file2.jpg
- file3.txt

Моя идея состояла в том, чтобы поместить все файлы в одну папку, чтобы все пользователи знали, куда идти. У меня вопрос: могу ли я использовать .htaccess или мне нужно для этого создать сценарии PHP? Как насчет безопасности (какой из них более безопасный)?

Спасибо

Ответы [ 3 ]

4 голосов
/ 28 сентября 2011

Это открытый каталог, с чего начать? Что вы можете сделать, это создать подпапку для каждого пользователя, поместить туда свои файлы, а затем назначить соответствующие разрешения в .htaccess для указанных папок. Однако для этого потребуется некоторая интеграция безопасности с вашей ОС (т. Е. Пользователи должны иметь учетные записи на вашем компьютере, а не только в веб-приложении) ... Быстрая и грязная - и небезопасная - альтернатива будет заключаться в добавлении всех загруженных файлов. имена файлов с именем пользователя (например, «file1.jpg», загруженный с помощью «foobar», может называться «foobar.file1.jpg», например), тогда это всего лишь случай, когда ваш PHP-скрипт возвращает только те файлы с соответствующим именем пользователя и возможно, убрав эту часть при отображении (или опять же, вы можете использовать папки, если ваш скрипт может создать новую папку для каждого пользователя, когда она не существует). Другой вариант, который является немного более безопасным, - это создать хэш файла и имен пользователей в базе данных, переименовать все загруженные файлы с помощью этого хэша и затем выполнить соответствующий запрос к базе данных.

Лучшим решением, безусловно, были бы управляемые ОС учетные записи, о которых я впервые упомянул, но это влечет за собой дополнительные издержки.

1 голос
/ 28 сентября 2011

Создайте PHP-скрипт, в котором вы используете readfile для отправки файла в браузер. Таким образом, вы можете ограничить доступ к отдельным файлам и использовать уже имеющуюся систему аутентификации.

0 голосов
/ 28 сентября 2011

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

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

...