Istnieje część "jak" i "kiedy/gdzie". Sposób jest dość prosty, ponieważ pliki binarne zawierają nagłówek, a nagłówek jest dość łatwy do usunięcia i sprawdzenia. W przypadku plików systemu Windows można sprawdzić artykuł Executable-File Header Format. Podobne formaty są używane w innych typach binarnych, więc możesz określić typy, które akceptujesz, a które nie.
UWAGA: Połączony artykuł służy do pełnego sprawdzania pliku. Istnieją tanie, zniszczone i brudne skróty, w których bada się tylko kilka bajtów.
Kiedy/gdzie zależy od sposobu pobierania plików. Jeśli używasz wysoce abstrakcyjnej metodologii (biblioteki przesyłania), co jest dość normalne, być może będziesz musiał przesłać cały plik, zanim zaczniesz sprawdzać bity. To czy jest przesyłane strumieniowo do pamięci, czy też trzeba je zapisywać i usuwać, zależy od twojego kodowania, a nawet od biblioteki. Jeśli kontrolujesz przesyłanie strumieniowe, możesz przesyłać strumieniowo pierwsze bajty (część nagłówka) i przerwać proces w strumieniu środkowym.
Nagłówki plików mogą być kute. Sprawdź pierwsze dwa bajty przesłanych danych - jeśli to "MZ", szanse na to, że masz plik wykonywalny. –
duplikat: http://stackoverflow.com/questions/3635128/validate-file-type-extension – Matthieu