2

Например, если мы переименуем файл .pdf в .exe и попытаемся запустить его под Windows, произойдет ошибка. Но может ли ОС определить, какую программу использовать для открытия файла, основываясь на его содержимом? не просто скрывая свою часть расширения.

т.е. у меня есть файл с именем "abc", который является PDF-файлом. Когда я дважды щелкните по нему, откроется программа чтения PDF.

Если это возможно, могут ли быть проблемы, связанные с безопасностью?

1 ответ1

4

Это возможно, но не всегда однозначно и чисто.

Возьмите, например, файлы документов Microsoft Office (.docx , .xlsx и т.д.). Это действительно zip-файлы со специальным содержимым, которое Microsoft Office знает, как их открывать. Так что, если бы операционная система угадывала, основываясь на формате файла, она увидела бы, что это действительные zip-файлы и открыла их в вашей программе сжатия. Если сначала он не разархивировал файлы, а затем начал просматривать содержимое, чтобы увидеть, действительно ли файлы были файлами Excel, в этот момент он удалит временно разархивированную копию и передаст оригинальный файл в Excel. Возможно, это можно сделать, но в конечном итоге вам придется иметь много логики в ОС, чтобы делать подобные предположения.

Существуют программы, которые пытаются сделать это предположение - например, программный файл UNIX. Вы можете заглянуть на волшебную страницу в Википедии, чтобы понять, как это работает. Проблема, с которой вы можете столкнуться здесь, заключается в том, что если кто-то особенно плотно использовал чужое магическое число, вы снова обращаетесь к расширению файла. Представьте формат файла, отличный от PDF, с помощью «% PDF».

Mac OS хранит тип файла в специальном коде типа, чтобы обойти эту проблему.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .