Является ли application / octet-stream безопасным типом MIME для принятия при приеме файлов CSV? - PullRequest
8 голосов
/ 16 марта 2011

Я создаю веб-форму, чтобы взять файл CSV и затем импортировать содержимое в базу данных контактов.Тем не менее, во время разработки я заметил, что при загрузке CSV-файла доступный мне тип MIME application/octet-stream.

. Быстрый веб-поиск в Google говорит мне, что application/octet-stream - это общий MIME-тип для двоичных файлов.Это может быть что угодно, от .csv до .exe файла, что не кажется мне безопасным, так как единственная другая информация, которую я должен определить, это тип файла - исходное имя файла.И это может легко изменить любой человек, обладающий базовыми компьютерными знаниями.

Как я могу убедиться, что CSV-файл, загруженный через веб-форму в PHP, на самом деле является CSV-файлом с вышеуказанной информацией?

Ответы [ 3 ]

6 голосов
/ 16 марта 2011

Это правильно, application/octet-stream - это тип MIME.

Можно проверить, имеет ли файл расширение CSV, и использовать функцию fgetcsv () , чтобы определить, является ли содержимое файла допустимым. Эта функция вернет NULL или логическое значение false, если возникнут проблемы с чтением файла в формате CSV.

1 голос
/ 16 марта 2011

для проверки файла, вы не должны зависеть от mime-типа, так как им легко манипулировать. То же самое для расширения файла. Обход такого рода «проверок безопасности» занимает 15 секунд.

Только для можно проверить содержимое файла, чтобы увидеть, содержит ли он действительные данные csv.

0 голосов
/ 16 марта 2011

При загрузке файлов вы никогда не должны никогда полагаться на MIME-типы. Они могут быть изменены пользователем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...