У меня быстрый вопрос о том, насколько это безопасно. Я написал скрипт принудительной загрузки php, и часть, которая на самом деле обслуживает файл, должна выглядеть довольно знакомо:
header('Content-Description: File Transfer');
header('Content-Type: application/force-download');
header('Content-Length: ' . filesize("user_files/".$temp_actual));
header('Content-Disposition: attachment; filename="'.$filename."\"");
readfile("user_files/".$temp_actual);
$filename
- это имя файла, которое они видят, а $temp_actual
- это РЕАЛЬНОЕ имя файла на моем сервере. Очевидно, что над этим есть гора кода, чтобы предотвратить плохие вещи, но в основном пользователи должны иметь возможность загружать любой контент, который они загрузили. если они загружают файл .php, я действительно не хочу, чтобы он запускался на сервере, я хочу, чтобы он доставлялся им через принудительную загрузку (и им действительно нужно иметь возможность загружать любой тип файла).
Он работает так, как задумано, со всеми загружаемыми расширениями, но я просто хочу быть абсолютно уверен, что они не могут запускать файлы php или html на моем сервере.
Дополнительная информация
user_files
находится в корне сайта, но .htaccess "deny from all"
к каждому файлу в каталоге user_files
добавляется файл .file вместо исходного расширения, исходное расширение заменяется, когда пользователь загружает свой файл (может быть, чуть выше).