Как реализовать ограниченный доступ к файлам в PHP? - PullRequest
1 голос
/ 29 июня 2011

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

Мой подход такой:

  1. У каждого пользователя есть папка для своих файлов (/ upload / userA)
  2. Добавить файл .htaccess, чтобы перенаправить весь доступ к папке / upload в скрипт PHP
  3. Проверьте, есть ли у пользователя разрешение на доступ к подкаталогу (/ userA)

Видите ли вы какие-либо недостатки в этом подходе? Есть лучшая альтернатива?

1 Ответ

1 голос
/ 29 июня 2011

Вместо жестких ссылок на файлы, вы можете сделать что-то вроде download.php?id=1234 и просто проверить наличие в базе данных 1234, имеет ли пользователь права на скачивание файла и вообще не показывать физический путь к пользователю.

С помощью заголовков HTTP вы можете заставить пользователей загружать файл с желаемым именем файла (хранится в базе данных). Предоставление пользователям прямого доступа к своим файлам по физическим путям не очень хорошая идея, и если вы попытаетесь подключить .htaccess к каждому запросу, это будет на самом деле дороже.

Большинство систем рассматривают генерацию некоторых случайных строк или идентификаторов GUID, которые нельзя просто получить доступ к чужому файлу путем случайного изменения символа. то есть в изображениях Facebook ../187170_697610597_4628627_q.jpg есть тот сложный URL-адрес, к которому пользователи могут напрямую обращаться, но не могут угадать другой URL-адрес изображения, изменив несколько цифр, это слишком сложно, но небезопасно и не соответствует вашим требованиям.

...