Я работаю над системой высокой безопасности, которая разрабатывается на PHP. Есть некоторые файлы, которые загружаются пользователем и загружаются в каталог. Как я могу сделать так, чтобы вы не могли просто перейти по URL-адресу файла и загрузить его? Однако мне все еще нужно иметь возможность загрузить файл из административного раздела сайта.
Спасибо
Есть несколько способов сделать это, один из них — скрыть каталог загруженных файлов с помощью файла .htaccess, который содержит просто:
order deny,allow
deny from all
Впоследствии, когда вы захотите dwonlaod файл (при условии, что у вас есть пути к файлам, сохраненные где-то в базе данных, или вы можете альтернативно передать их в некоторой форме в параметре GEt), вы можете загрузить их, используя код, подобный этому (и пример на основе документации PHP):
// check user credentials
check_if_logged_in();
// get path to file
$file = get_your_file_path();
if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
readfile($file);
exit;
}
Размещать файлы за пределами веб-каталога. Затем использовал это, чтобы загрузить: как получить доступ к файлу из корневого каталога в php