Не используйте copy()
, используйте move_uploaded_file()
для получения загруженных файлов.Использование copy()
сопряжено с некоторыми серьезными уязвимостями безопасности.
как снизить риск выполнения этого скрипта на сервере?
Это просто: просто не помещайте егов любом месте, где это может быть выполнено :) Серьезно, вы можете хранить самые злые вирусы на вашем сервере - если они находятся в каталоге, в котором они не могут быть запущены, у вас нет проблем.
Настоящая проблема в том, что происходит, когда люди скачивают файл.Вы можете использовать fileinfo
, как указано в других ответах, чтобы узнать, является ли это PDF.Для чего-то еще, например, для проверки на наличие злонамеренных взломов в файле PDF, среди которых есть некоторые, - вам необходимо установить антивирусный сканер на стороне сервера.
Кроме этого, пользователь должен будет запустить антивирусный сканер.Здесь нет 100% безопасности.Полная безопасность может быть обеспечена открытием и повторным сохранением каждого документа PDF с использованием собственной библиотеки PDF, но я не знаю, есть ли какие-либо библиотеки PHP, которые могут это сделать.