|
|
|
| Здравствуйте !
Столкнулся с необычным явлением
загружаю файл на сервак и проверяю его $_FILES['userfile']['type']
все проверяется без проблем
НО
я специально подменяю txt файл => делаю его с расхирением gif например - файл как вы пониматете БИТЫЙ с точки зрения картинки gif и естественно его $_FILES['userfile']['type'] должен быть каким угодно но ТОЛЬКО НЕ image/gif
Однако загружая ЛЮБОЙ ФАЙЛ (mp3 , txt, exe ) пменяя расширение на GIF - переменная $_FILES['userfile']['type'] тупо говорит что type = image/gif как будто смотрит только на его расширение а не лезет во внутренности и не проверяет ИСТИННЫЙ ТИП ФАЙЛА
ВОПРОС
как определить ИСТИННЫЙ ТИП ФАЙЛА?
Спасибо | |
|
|
|
|
автор: Wunderbar (17.03.2008 в 19:30) |
|
|
для: Nevi
(17.03.2008 в 19:08)
| | Да значение $_FILES['userfile']['type'] передается от клиента, сервер файл никак не проверяет.
А MIME тип понятие вообще расплывчатое. Я могу сейчас придумать свой тип. Отсюда вытекает, что истинный тип определить невозможно - якобы битый файл на самом деле для какой-то программы может быть вполне нормальным.
Если хочешь проверить конкретные, всем известные типы файлов, то придется парсить их. Занятие довольно муторное.
Можно просто проверять первые байты файла и, если они подходят под стандарт, например, GIF'а "поверить", что дальше тоже всё путем. | |
|
|
|