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

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

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

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

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

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

Советуйте.

10
задан Bakudan 5 December 2011 в 07:13
поделиться

3 ответа

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


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

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

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

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

13
ответ дан 3 December 2019 в 15:51
поделиться

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

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

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

9
ответ дан 3 December 2019 в 15:51
поделиться

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

5
ответ дан 3 December 2019 в 15:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: