2010-02-24 8 views
1

У меня есть каталог файлов, которые могут загружать зарегистрированные пользователи и войти в систему. Некоторые из файлов являются общедоступными, а другие частными - только для внутреннего доступа. Имена файлов и параметры доступа сохраняются в базе данных.Аутентификация/отказ в доступе к файлам в каталоге с php

Может ли кто-нибудь дать мне какие-либо ресурсы или показать мне пример того, как я могу использовать данные сеанса (и .htaccess?), Чтобы разрешить доступ к приватным файлам только авторизованным пользователям?

Я думаю, что было бы проще хранить общедоступные документы в отдельном незащищенном каталоге, хотя я бы хотел сохранить все вместе.

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

спасибо!

ответ

1

Я предполагаю, что я бы не стал использовать .htaccess (или какой-либо HTTP-аутентификации) для этого: .htaccess/.htpasswd велики, если вы хотите разрешить/запретить доступ к целому каталогу, а не к конкретным файлам.


Вместо этого, я бы:

  • Запретить любой доступ к файлам - т.е. использовать .htaccess файл, содержащий Deny from All
    • Таким образом, никто не имеет доступа к файлу
    • Это означает, что каждый должен будет использовать другой способ доступа к файлам, чем прямой URL.
  • Разработка PHP скрипт, который будет:
    • получить идентификатор файла (имя файла, например, или некоторый идентификатор, который может соответствовать файлу)
    • аутентификации пользователей (с некоторыми полями ввода/пароля), по отношению к данным, хранящимся в базе данных
    • , если пользователь действителен и имеет доступ к файлу (Если разные пользователи не имеют доступа к одному и тому же набору файлов), прочитайте содержимое файла с вашего PHP-скрипта и отправьте его пользователю.

Преимущество заключается в том, что ваш PHP скрипт имеет доступ к БД - это означает, что может позволить пользователям входить в, срубы, оно может использовать сессии, ...


О "отправить файл из PHP", вот несколько вопросов, которые могли бы пролить свет:

+0

Спасибо! Я рассматривал такой подход, но у меня создалось впечатление, что «Deny from All» также не позволит php взаимодействовать с файлами. – neil

+0

Нет: «Отказ от всех» влияет на Apache; но не на PHP * (пока ваш PHP-скрипт не находится в каталоге, который содержит этот «Deny from all», конечно, поскольку ваш PHP-скрипт обслуживается Apache) * –

0

I Создайте пользовательский индексный скрипт в PHP - то, что будет показывать файлы динамически. Используйте это, чтобы сохранить только нужные файлы, а затем, чтобы дополнительно защитить файлы, загружать содержимое файла динамически - ссылки Pascal MARTIN показывают, как использовать PHP для управления потоковой передачей файлов, вы можете использовать это для блокировки доступа из скрытых файлы пользователям, которые не должны добираться до них.

Смежные вопросы