Sì, i tipi Mime sono il metodo consigliato. Poiché questo è ciò che fanno tutti gli User Agent (browser, ecc.), Puoi fare affidamento su di esso per comportamento predefinito.
Per "bit magici" se intendi l'analisi delle strutture di intestazione del file - sì, puoi farlo come un ulteriore passaggio se il tuo rischio è alto, ovvero il tuo modello di minaccia comporta un passaggio in cui gli autori di un attacco caricano un file dannoso e questo porta a qualche debolezza. Comporta chiaramente un ulteriore lavoro da parte tua (che consuma cicli della CPU, aumentando così i costi) che dovresti fare solo quando il vantaggio è "ne vale la pena".
C'è anche la possibilità di usare estensioni del nome del file (ad esempio, .pdf per il formato PDF, .jpg / .jpeg per il formato JPEG, ecc.) per rilevare i tipi di file (usati abbastanza spesso) - ma ancora, questo è leggermente meno affidabile (la mia opinione, non è provato) rispetto all'utilizzo di tipi mime.