Это действительно зависит от типа файла. Для многих типов файлов вы можете проверить заголовок файла, который обычно предшествует первому 0 символу в файле. Раньше у меня был какой-то код, который проверял типы изображений, так что я мог бы найти его где-нибудь.
Но есть типы файлов, которые не имеют такой формы заголовка, как XML (да, это дешевый пример, но мне было легко подумать; ->). Я полагаю, что у всех типов графики будет заголовок, как и у других типов двоичных файлов.
Как уже упоминал Эндрю, заголовок не на 100%. Но вряд ли это будет хакерская атака, если файл «искажен». Скорее всего, поврежденная загрузка или загрузка поврежденного файла.