Какие трудности / проблемы следует учитывать при разрешении загрузки файлов ZIP?
Я разрешаю загружать файлы PDF на мой сайт (PHP).
Я хотел бы предложить возможность также разрешать файлы.zip, которые содержат файлы PDF в каталогах, чтобы пользователям было проще просто заархивировать каталог и загрузить один файл вместо загрузки нескольких отдельных файлов zip.
Для тех из вас, кто предлагает функцию загрузки файла.zip на ваш (PHP) веб-сайт, с какими техническими, безопасными и другими проблемами вы столкнулись?
3 ответа
Предполагая, что.zip распаковывается, в конечном итоге вы должны убедиться, что каталог, в который они распакованы, недоступен для браузеров клиентов (с.htaccess или путем размещения его вне корневого веб-каталога), и даже в этом случае я бы по-прежнему следите за содержимым распакованного.zip-файла, чтобы убедиться, что он не содержит ничего, что может оказаться вредным (php или другие файлы, запускаемые сервером, html-подделки)
Другая проблема, я думаю, upload_max_filesize
установить в php.ini, вы можете убедиться, что он может быть достаточно большим, чтобы соответствовать вашим целям, прежде чем начать кодирование.
редактировать: также прочитайте ответ Сарнольда;)
Будьте осторожны, когда распаковываете почтовый индекс, вы можете потреблять гораздо больше ресурсов, чем ожидали. Возможно некоторые setrlimit(2)
было бы разумно ограничить ресурсы перед распаковкой.
unzip(1)
Утилита имеет несколько встроенных функций безопасности; -^
опция командной строки отключает фильтрацию управляющих символов, поэтому убедитесь, что вы не трогаете это:) и -:
опция командной строки позволяет глупые пути, такие как ../../../../etc/passwd
, Убедитесь, что вы используете версию не ниже 5.50, так что эти глупые пути запрещены по умолчанию. (И не используйте этот параметр командной строки. Я упоминаю эти параметры только для того, чтобы вам было легче найти документацию для них.:)
Если вы используете API, убедитесь, что у него есть опции для предотвращения обоих типов глупых имен файлов.
AFAIK, PHP может обрабатывать ZIP-файлы довольно эффективно. Сложности / проблемы, о которых я могу подумать, при доступе к файлу, где нам нужно сначала извлечь zip, а затем получить нужный файл. По этой причине при извлечении zip-файла может потребоваться дополнительное время сервера, в зависимости от размера самого файла.
Где, как, во время загрузки, я не думаю, что есть какие-либо трудности или проблемы, специально выделенные на zip
типы.