Как предотвратить публичную загрузку файлов с помощью php?


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

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

Мне нужно решение на php.

Я погуглил, но пока ничего прямолинейного.

В настоящее время в корневом каталоге моего документа у меня есть папка admin и подпапка uploads внутри администратора. Таким образом, загружать может только роль администратора. Как редактор, так и администратор могут загружать. Что должен ли я делать в этом случае?

Пожалуйста, сообщите.

Author: Bakudan, 2010-02-26

3 answers

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


Если ваши файлы находятся в папке /public_html/, извлеките их из этой папки и поместите, например, в /secret_files/, чтобы ваша структура каталогов выглядела примерно так:

public_html/
    index.html
    admin/
        admin_index.php
secret_files/
    my_secret_file.txt

Веб-сервер настроен только для обслуживания файлов в /public_html/ каталог, поэтому никто не будет иметь доступа к каталогам за пределами (технический термин выше).

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

 13
Author: deceze, 2010-02-26 06:14:46

Не храните файлы в каталоге в корневом каталоге документа.

Вместо этого переместите их в другое место, а затем PHP-скрипт может программно определить, может ли кто-то загрузить их, а затем использовать readfile() или что-то подобное, чтобы передавать их пользователю.

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

 9
Author: cletus, 2010-02-26 05:22:59

Ответ на вопрос о том, как защитить паролем с помощью PHP: Это должно решить вашу проблему.

 5
Author: twodayslate, 2017-05-23 11:51:47