2013-07-04 3 views
1

У меня есть файловый загрузчик с ограничениями типа файла. Загружающий файл проверяет тип файла, проверяя расширение файла (например, * .txt => разрешено, * .exe => не разрешено). Мне теперь сказали, что это проблема, что вы можете просто отредактировать расширение файла и загрузить его, даже если это файл, который не разрешен.Обнаружение типа файла без окончания

Так что мой вопрос: возможно ли даже определить тип файла без проверки расширения файла? Будет ли это угрозой безопасности каким-либо образом, например? если можно загрузить двоичные файлы с измененным расширением?

Я использую Ajax/Javascript с MVC4 (так Windows Server). Но я думаю, что это общий вопрос.

Извините, если этот вопрос может быть не таким сложным, но я не знал, как я мог бы найти его, кроме вопросов. (так что ни опускайте пожалуйста ^^)

+1

Существует несколько эвристик, не так просто получить дурака. –

+1

Это должно помочь: http://stackoverflow.com/a/11548095/284240 –

+1

Или это http://stackoverflow.com/q/58510/157833 –

ответ

0

Вы можете искать различные «магические числа» в некоторых типах файлов, если вы можете видеть содержимое файла. http://en.wikipedia.org/wiki/EXE дает некоторую информацию о некоторых маркерах в исполняемых файлах Windows, которые могут использоваться для идентификации исполняемых файлов путем просмотра содержимого файла. Есть, я уверен, более подробные технические ресурсы в форматах файлов, доступных в MSDN и других местах.
Что касается риска, связанного с безопасностью, это очень сильно зависит от того, что вы делаете с данными после его получения. Строка байтов может быть выполнена, даже если она не находится в пакете EXE, если она неверна, и, наоборот, EXE можно безопасно обрабатывать.

0

Чтобы определить тип файла, вы можете посмотреть расширение или посмотреть содержимое.

1) Как вы уже заметили, расширение не надежно, потому что это просто соглашение. Никто не может гарантировать правильность расширения.

2) Другой способ - посмотреть в файл и попытаться угадать тип. Для этого вам нужно будет написать список известных заголовков или других подписи, которые нужно искать. В зависимости от типа файла это может быть более надежным, но в зависимости от типа файлов, которые вы ожидаете, это может вызвать большие накладные расходы.

Смежные вопросы