У нас есть некоторые файлы на нашем веб-сервере, которые являются действительными zip-файлами, но используются другой программой в качестве файлов данных. Однако при загрузке этих файлов (путем нажатия на ссылку href) в Internet Explorer 8 они переименовываются в * .zip, поэтому они больше не связаны с правильной программой.
Могу ли я что-нибудь сделать на нашем веб-сервере или в html-формате страницы загрузки, что помешает IE переименовать эти файлы?
FireFox и Chrome оставляют файл с его исходным именем, поэтому проблем не возникает.
Сначала немного предыстории ..
Ваш веб-сервер определяет, что файл является допустимым ZIP-архивом, используя некоторую магию MIME. Таким образом, он доставляет HTTP-ответ со следующим заголовком:
Content-Type: application/zip
Когда IE8 получает файл, ему уже сказали, что это ZIP. Затем, когда установлен параметр безопасности по умолчанию «Открывать файлы на основе содержимого, а не расширения файла», он ищет назначенное расширение для этого типа содержимого в реестре по адресу HKEY_CLASSES_ROOT\MIME\Database\Content Type
.
Есть несколько способов атаковать это. Вы можете изменить любую из двух переменных на локальном компьютере, указанном выше. Но я бы определенно не рекомендовал менять настройки локального компьютера везде, где это возможно - это хакерский метод и не масштабируется. Лучшим решением было бы изменить веб-сервер:
Настройка статического объявления MIME для исходного расширения файла, которое будет отправлено как application/octet-stream
. Это приведет к тому, что файл будет доставлен как прямой двоичный файл без информации о содержимом.
Раздача файлов с заголовком Content-Disposition: attachment
что заставит IE уважать имя файла, указанное веб-сервером. Однако это может быть не так просто в зависимости от вашей платформы.
Вы используете IE8 для его загрузки? В таком случае вам нужно добавить сайт в список надежных сайтов в IE8, чтобы он правильно загрузился.
Судя по всему, Internet Explorer 8 подчиняется типу MIME, указанному сервером, по соображениям безопасности при именовании файла.
Вы можете попытаться настроить типы mime своего сервера и добавить 'xyz' (заменить на расширение файла) или отключить это поведение в Internet Explorer 8:
Internet Options -> Security Settings "Custom Level" -> Miscellaneous section: Open files based on content, not file extension