Risposta breve: No.
Longer risposta:
Confrontando l'estensione e fare in modo che corrisponda al tipo MIME in realtà non impedisce nulla. Come è stato detto nei commenti, è ancora più semplice modificare un'estensione di file. Tipo e estensione MIME devono essere intesi solo come suggerimenti, non c'è alcuna sicurezza intrinseca in essi.
Garantire che i file in entrata non facciano danni dipende molto da quale sarà il tuo scopo per loro. Nel tuo caso ho capito che ti aspetti delle immagini. Quindi, ciò che si potrebbe fare è eseguire prima alcuni controlli di integrità: analizza i primi due byte per vedere se i file contengono le firme di intestazione dell'immagine pertinenti - tutti i formati di immagine rilevanti hanno questi.
Le "intestazioni di firma" consentono di decidere il tipo di formato di immagine che un file tenta di impersonare. In una fase successiva è possibile verificare se il resto dei contenuti è conforme al formato dell'immagine sottostante. Questo ti garantirebbe che il file è veramente un file immagine di quel formato specifico.
Ma anche in questo caso, il file potrebbe essere elaborato con cura in modo tale che quando si visualizza l'immagine, una libreria popolare utilizzata per visualizzare quell'immagine (ad es. Libpng ecc.) Verrebbe eseguita in un buffer overflow che l'utente malintenzionato ha trovato in quel biblioteca.
Sfortunatamente non c'è modo di impedirlo attivamente, oltre a non consentire alcun input dal lato client.
La tua domanda riguardo lo spoofing di tipo mime o vuoi solo sapere come convalidare i file caricati per verificare se sono file di immagine? – CodeCaster
In effetti, non dovresti fare affidamento sui tipi MIME e sull'estensione del file (e il tuo controllo, se mime-> extension, è anch'esso sbagliato, se faccio finta mime posso falsificare ancora più facilmente un file xtension corrispondente) –
@CodeCaster: come assicurarsi che i file che i tipi MIME dei file caricati non siano falsificati? – abruski