Перед загрузкой на сервер мне нужно проверить содержимое zip / rar-файла.
Позвольте мне объяснить сценарий.
В моем веб-проекте есть 2 типа пользователей:
1: Обычный Зарегистрированный пользователь 2: Администратор проекта
Любой зарегистрированный пользователь может создавать страницы в нашем проекте, а также создавать Themes
для страниц.
Здесь один из нас предложил функцию, которая загружает Theme
как пакет тем [Сжатый в Zip/Rar
File].
Если это администратор, тогда все в порядке, ограничений безопасности больше нет.
Но я боюсь в случае обычных зарегистрированных пользователей.
Мои проблемы:
Предположим, что зарегистрированный пользователь загрузил пакет тем, содержащий вредоносные файлы [Включая файл PHP], которые могут повредить систему. Я знаю, что после загрузки вы можете проверить содержимое, но что произойдет, если использование выполнит файл до этого?
Пример: пользователь, загружающий пакет тем: содержит some PHP codes & other large files
Сначала наша система будет извлекать содержимое пакета тем: предположим, что извлечение больших файлов занимает некоторое время, а более мелкий PHP-файл уже извлечен. что пользователь может сначала запустить файл PHP.
Вышеупомянутый мой мой вопрос, на самом деле я не знаю других сторон.
Пожалуйста, помогите мне разобраться в этой проблеме.
Можно ли загружать ZIP-файл в безопасном режиме?
Вы не сможете проверить эту клиентскую сторону, если, конечно, у вас не было какого-то плагина (для всех браузеров), который проверил / выгрузил для вас. Вам придется обрабатывать это на стороне сервера.
Кроме того, админы могут загружать вирусы так же легко, как и не админы. Некоторые пользователи даже не знают, что в их машине больше вирусов, чем в публичном доме в городе.
EDIT: Кроме того, как пользователь будет выполнять свой файл PHP на вашем сервере, прежде чем вы его проверите, если вы не запустите этот файл php? В любом случае это звучит как рецепт катастрофы. Все, что потребуется, – это что-то проскользнуть через трещины, и злонамеренный пользователь уничтожит ваш сайт. Предоставление нормальным людям возможности загружать исполняемый скрипт на ваш сервер требует серьезных проблем.
Распакуйте его в каталог, который не может быть достигнут через Интернет, проверьте, а затем вернитесь в веб-папку, где она должна быть.
Предполагая, что ваш веб-сайт в каталоге / var / www / website и пользовательский контент отправляется в / var / www / website / user и доступен через http://www.website.com/user/:
Создайте временный каталог в / tmp, распакуйте его, проверьте, перейдите в / var / www / website / user
Если у вас нет доступа к / tmp, вы можете создать / var / www / website / tmp и запретить доступ к нему с помощью настроек вашего сервера
вы можете создать папку для размещения zip-файла и разархивировать.
и отключите выполнение php для папки. что может решить вашу проблему