Krótka odpowiedź: Nie
Dłuższa odpowiedź:
Porównując rozszerzenie i upewniając się, że pasuje do typu MIME nie naprawdę zapobiec niczego. Jak powiedziano w komentarzach, nawet łatwiej jest zmodyfikować rozszerzenie pliku. Typ MIME i rozszerzenie mają jedynie charakter wskazówek, nie ma w nich nieodłącznego zabezpieczenia.
Zapewnienie, że przychodzące pliki nie wyrządzają szkody, zależy w dużym stopniu od tego, jaki będzie ich cel. W twoim przypadku zrozumiałem, że spodziewasz się obrazów. Możesz więc najpierw wykonać kilka testów poprawności: zeskanuj pierwsze kilka bajtów, aby sprawdzić, czy pliki zawierają odpowiednie sygnatury nagłówka obrazu - wszystkie odpowiednie formaty mają je.
"Nagłówki sygnatur" pomagają zdecydować, jaki format obrazu próbuje się podrobić plik. W następnym kroku możesz sprawdzić, czy reszta zawartości jest zgodna z podstawowym formatem obrazu. Gwarantuje to, że plik jest w rzeczywistości plikiem graficznym o tym konkretnym formacie.
Ale nawet wtedy plik mógłby być starannie spreparowany w taki sposób, że po wyświetleniu obrazu, popularna biblioteka używana do wyświetlania tego obrazu (np. Libpng itp.) Natrafiłaby na przepełnienie bufora, które atakujący znalazł w tym biblioteka.
Niestety nie ma sposobu, aby aktywnie temu zapobiec, nie dopuszczając w ogóle żadnych danych ze strony klienta.
Czy masz pytania dotyczące podszywania się pod typ mime, czy chcesz tylko sprawdzić poprawność przesłanych plików, aby sprawdzić, czy są to pliki graficzne? – CodeCaster
Tak naprawdę, nie powinieneś polegać na typach MIME i rozszerzeniu pliku (a twoje sprawdzenie, jeśli mime-> rozszerzenie, jest również błędne, jeśli podrabiam mime, mogę jeszcze łatwiej zmyślić odpowiedni plik xtension) –
@CodeCaster: Jak upewnić się, że pliki typu MIME przesłanych plików nie są sfałszowane? – abruski