Cita: Si tomás un archivo .exe y lo renombrás como .txt, el mime-type que te va a mostrar el array $_FILES es text/plain. (Hacé la prueba vos mismo).
Hice unas pruebas en mis sistemas .. subí un .exe como tal y el mismo renombrado a .txt. Los subí desde una máquina Windows XP (con IE 6 de navegador) a mi servidor PHP 5 bajo Linux (Fedora 5), en ambos casos obtube en "type" como formato MIME del archivo:
application/octet-stream
No te discuto nada de lo que mencionas, sólo aporto la prueba que hice.
Digo no te discuto por qué muchos datos que "informa" el cliente en una conexión lo entrega el cliente .. así que si tu "simulas" tu cliente (por sockets) podras hacerte pasar por cualquier tipo de cliente, indicar un "REFERER" falso .. o incluso que tus datos son de tal formato MIME?.
Si la información del formato MIME va incrustrada en el código del archivo y tu lo editas .. por supuesto que vas a saltarte toda validación que hagas .. pero ... en ese caso ¿como validamos? .. nos guiamos por la extensión del archivo? ..
No he estudiado en profundidad que tan seguro pueda ser este método .. pero lo que puedo asegurar que es mejor ver el "MIME" que ver una extensión de un archivo .. Tal vez habría que combinar ambos métodos: extensión y MIME .. pero no depender de uno sólo, por qué ambos métodos tienen sus falencias .. algunos más simples de "saltar" y otros más complicados.
Un saludo,