Валидация загружаемого файла, какие проверки необходимо добавить?
0) На фронтэнде позволять загружать только определенные типы файлов. Ради комфорта, а не безопасности, конечно.
На сервере:
1) Проверить расширение файла.
2) Проверить Content-Type.
3) Прочитать первые 512 байт и закинуть их в функцию, определяющую Content-Type файла. Результат должен совпасть со вторым пунктом.
4) Проверить размер файла.
Чисто в теории, можно будет обойти эту валидацию, запихав скрипт в середину картинки, тогда и расширение будет соответствовать и C-T тоже. Но тогда сам файл будет сохранен на сервере, как, например, alala.jpg, и тогда его нельзя будет запустить, как скрипт, или я ошибаюсь?
Можно загрузить годный с точки зрения валидации файл, который будет содержать вредоносные инструкции.
Допустим, вписать в некоторые участки изображения PNG код для эксплуатации уязвимых версий компонентов системы, обрабатывающих файл.
Так что помимо валидаций может имеет смысл ещё сканировать антивирусами с последними обновлениями баз данных.