Отключить прямые загрузки

Я работаю над системой высокой безопасности, которая разрабатывается на PHP. Есть некоторые файлы, которые загружаются пользователем и загружаются в каталог. Как я могу сделать так, чтобы вы не могли просто перейти по URL-адресу файла и загрузить его? Однако мне все еще нужно иметь возможность загрузить файл из административного раздела сайта.

Спасибо

0

Решение

Есть несколько способов сделать это, один из них — скрыть каталог загруженных файлов с помощью файла .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;
}
0

Другие решения

Размещать файлы за пределами веб-каталога. Затем использовал это, чтобы загрузить: как получить доступ к файлу из корневого каталога в php

0