Ну, я собирался отметить, что это может быть небезопасно. Тем не менее, это распространенный тип программ. Обработчик файлов должен очистить ввод пользователя. Прежде всего, вы должны запустить свой веб-сервер под отдельной учетной записью с ограниченными возможностями. Таким образом, если хакер может попытаться получить доступ к вашей файловой системе, они уже серьезно ограничены. Затем вы должны изменить разрешения для всего, что находится за пределами папки загрузки.
Теперь у вас есть пара опций для очистки пользовательского ввода, для которого загружается файл.
Вы можете использовать Perl Regex, чтобы найти расширение.
Вы можете использовать pathinfo (), чтобы получить базовое имя и расширение ... таким образом, вы не открываете никакой директории (например, ../ или / home и т. Д.).
Вы можете присвоить каждому файлу идентификатор в базе данных, а затем вместо этого обработчик файла должен выполнить что-то вроде /download.php?file=12345, но вам придется очистить пользовательский ввод для базы данных.