Перед загрузкой проверьте содержимое файла

Перед загрузкой на сервер мне нужно проверить содержимое 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 для папки. что может решить вашу проблему