Ну первое что приходит в голову, это конечно же проверка на getImageSize
Второе , как я реализовал в своей библиотеке, это не обработка по расширению, а обработка байтов картинки, то есть получить ресурс из файла. Если это не картинка, оно сразу поломается
https://github.com/Compolomus/Compomage
Если кому интересно, присоединяйтесь
php.net/manual/ru/function.imagecreatefromstring.php