Как мне сделать файл доступным только для PHP?

#php #.htaccess #access-control

#php #.htaccess #управление доступом

Вопрос:

У меня есть PHP-скрипт, который должен очищать базу данных, и я не хочу, чтобы к этой базе данных был открытый доступ. Как мне сделать так, чтобы файл нельзя было просматривать как https://example.com/database.file , но PHP-файл все равно мог его очистить.

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

Затем я просмотрел два вопроса на этом веб-сайте, но ни один не смог ответить на мою проблему.

Комментарии:

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

2. Вам не обязательно помещать файл вашей базы данных в общедоступный каталог. Вы можете переместить его за пределы корня документа.

Ответ №1:

Вы можете установить условие перенаправления для файла в apache / nginx, чтобы запретить внешнее использование.

В Apache:

 <FilesMatch "^(database.file)$">
  Require all denied
</FilesMatch>
  

В Nginx:

 location = /database.file {
        deny all;
        return 404;
}
  

Комментарии:

1. В Nginx вы бы использовали internal директиву

Ответ №2:

Если вы хотите, чтобы ваш файл был скрыт, ИМО, самый простой способ — перенаправить на ваш файл 404 (страница «файл не найден») путем перезаписи URL.

что-то вроде: RewriteRule "^folder/myFile.php$" "404.html" [QSA,L]

Перезапись URL не повлияет на PHP includes / requires или file_get_contents которые имеют дело непосредственно со структурой файловой системы