Я хочу разрешить моим пользователям загружать файлы .php
на сервер, но также хочу, чтобы файлы были безвредны для моего приложения.Как обрабатывать загрузку файлов .php без возможности их выполнения?
Любые предложения?
спасибо.
Я хочу разрешить моим пользователям загружать файлы .php
на сервер, но также хочу, чтобы файлы были безвредны для моего приложения.Как обрабатывать загрузку файлов .php без возможности их выполнения?
Любые предложения?
спасибо.
Я рекомендую «отключить выполнение сценария в дате загрузки каталога» подход. Это единственное решение, абсолютно безопасное.
Просто добавьте это правило в .htaccess
файл внутри каталога загрузки:
php_value engine off
Просто не выполняйте их, этого достаточно.
Убедитесь, что ваше приложение не запускается и не включает загруженные пользователем файлы в любой момент (например, с помощью параметра GET до include
файла без каких-либо санитарных условий).
Также убедитесь, что загруженные файлы недоступны снаружи с расширением .php
.
В нормальном, частично обработанном правильно закодированном рабочем процессе загруженные .php-файлы не представляют угрозу безопасности независимо от того, какой код они содержат.
Или разрешить другим пользователям загружать их ... –
Да. Я удалил абзац из моего ответа, на самом деле не обязательно говорить об этом. –
Вариант 1: Сохраните их с другим именем файла и сохраните исходное имя файла как часть метаданных, например. в таблице базы данных.
Вариант 2: Отключить выполнение сценария в каталоге uploads.
Вариант 3: Переименовать их .phps (общепринятое расширение для отображения необработанного PHP)
Несколько решений:
Сделать каталог загрузки раздельный, только для записи и невидимый из Интернета (это предотвратит их доступ к их собственному скрипту после загрузки).
Затем вы можете модерировать новые скрипты и выполнять, как вы сочтете нужным.
+1 Это отличное решение, но оно защитит только запросы, сделанные через веб-сервер, а не от внутреннего исполнения через включение (но это все равно очень незначительный риск). –
Это само собой разумеется! Запуск приложения, которое выполняет код, загруженный пользователями без какой-либо санитарии, является, конечно, плохой идеей. Но вы правы, конечно. –
Вы также можете изменить тип mime на «text/plain» или что-то подобное. – DisgruntledGoat