2010-01-11 2 views

ответ

6

Я рекомендую «отключить выполнение сценария в дате загрузки каталога» подход. Это единственное решение, абсолютно безопасное.

Просто добавьте это правило в .htaccess файл внутри каталога загрузки:

php_value engine off 
+0

+1 Это отличное решение, но оно защитит только запросы, сделанные через веб-сервер, а не от внутреннего исполнения через включение (но это все равно очень незначительный риск). –

+0

Это само собой разумеется! Запуск приложения, которое выполняет код, загруженный пользователями без какой-либо санитарии, является, конечно, плохой идеей. Но вы правы, конечно. –

+0

Вы также можете изменить тип mime на «text/plain» или что-то подобное. – DisgruntledGoat

0

Просто не выполняйте их, этого достаточно.

Убедитесь, что ваше приложение не запускается и не включает загруженные пользователем файлы в любой момент (например, с помощью параметра GET до include файла без каких-либо санитарных условий).

Также убедитесь, что загруженные файлы недоступны снаружи с расширением .php.

В нормальном, частично обработанном правильно закодированном рабочем процессе загруженные .php-файлы не представляют угрозу безопасности независимо от того, какой код они содержат.

+0

Или разрешить другим пользователям загружать их ... –

+0

Да. Я удалил абзац из моего ответа, на самом деле не обязательно говорить об этом. –

1

Вариант 1: Сохраните их с другим именем файла и сохраните исходное имя файла как часть метаданных, например. в таблице базы данных.

Вариант 2: Отключить выполнение сценария в каталоге uploads.

Вариант 3: Переименовать их .phps (общепринятое расширение для отображения необработанного PHP)

1

Несколько решений:

  • Переименуйте их .phps
  • Отключить выполнение PHP в загрузке каталог в вашей конфигурации веб-сервера
0

Сделать каталог загрузки раздельный, только для записи и невидимый из Интернета (это предотвратит их доступ к их собственному скрипту после загрузки).

Затем вы можете модерировать новые скрипты и выполнять, как вы сочтете нужным.