Самое прикольное то, что насовать левые файлы можно как в случае первой предложенной проверки, так и в случае второй ))
Да, это распространенные "варианты", но спасут только от определенных ситуаций.
Эти проверки, скорее, для пристижа
Что бы спугнуть часть нападающих
Но спать спокойно не выйдет.
Я предлагаю,
1. Обязательно проверять расширение файла
2. Если оно валидно, пересохранять картинку используя GD (это выкинет вредоносный код из файла, если он есть)
3. Если сохраняете файлы в директории у себя на сервере, отключайте там возможность исполнять PHP код.
4. Не позволять пользователю контролировать название загруженных файлов (переименовывать их)
Естественно это не все нюансы безопасности загрузки файлов, но для картинок меня ещё не подводило.
И да, если проверять mime, то лучше ещё и проверить соответствие mime из $_FILES и finfo/exif.
Бывают случаи, когда mime из $_FILES точнее чем finfo/exif. Угу.
Могут быть конечно проблемы при сравнении со всякими pjpeg, но будьте добры, используйте алиасы для "кривых" типов. Гулять так гулять)
Вообщем у меня всё, более подробно - в поисковиках и бложеках ну и конечно же собственные "ковыряния", куда же без них