2009-05-06 3 views
15

Для моего веб-приложения люди могут загружать изображения из веб-формы на мой веб-сервер.Как защитить каталог загрузки изображений веб-сервера?

Что нужно установить для CHMOD-настроек для каталога загрузки изображений, чтобы люди могли загружать изображения (с веб-сервера) в этот каталог, но не выполнять файлы, которые они загружают по соображениям безопасности.

Могут ли быть настройки chmod? :

chmod 744 directory/ 

ответ

0

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

Обратите внимание, что «выполнить» в каталогах означает «может получить доступ к файлам внутри директории», так что должен быть установлен, если вы хотите, чтобы ваш веб-сервер, чтобы получить доступ к файлам внутри ...

22

Есть два возможных значения для «исполняемого» в этом контексте, и оба - это то, что вам нужно настроить.

  1. Исполняемый двоичный файл, который может работать из командной строки, введя имя файла в оболочку

  2. файл, который может быть чтения и обрабатываться как сценарий с помощью веб-сервера.

Обработка двоичных исполняемых

Чтобы настроить против случая 1 на ип * х системы, вам необходимо убедиться, что ваш каталог загрузки и файлы в нем, принадлежат пользователю веб-сервера и только читаемый этим пользователем. Каталог должен быть исполняемым; это означает, что к файлам внутри этого каталога можно получить доступ). Если веб-пользователю необходимо перечислить файлы в каталоге, он также должен быть доступен для чтения. Это, конечно же, должно быть доступно для записи, чтобы разрешить создание новых файлов.

Таким образом, множество восьмеричное вы хотите бы

chown <web-server-user> <upload-dir> 
chmod 0700 <upload-dir> 

файлы не должны быть выполняемыми и должен быть доступен только для чтения и записи на веб-сервере, поэтому они должны быть

chmod 0600 <uploaded-file> 

Пожалуйста, обратите внимание, что это означает, что сможет видеть только файлы веб-сервера. Это лучшая ситуация для безопасности. Тем не менее, если вы действительно нуждаетесь в других локальных пользователей, чтобы иметь возможность увидеть эти файлы, а затем использовать

chmod 0755 <upload-dir> 
chmod 0644 <uploaded-file> 

Обработка веб-сервер excutable

Кодирование от случая 2 является веб-сервер специфичны.

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

Другой вариант - настроить ваш веб-сервер, чтобы не разрешать обработку файлов в каталоге загрузки. Эта конфигурация является специфичной для веб-сервера. Однако, например, в Apache вы можете добиться этого путем ввода в конфигурации сервера:

<Directory "path-to-upload-dir"> 
    AllowOverride None 
    Options -ExecCGI 
</Directory> 

AllowOverride Нет важно, так как он останавливает кого при загрузке файла .htaccess в директории закачки и повторного конфигурирования веб разрешения сервера для этого каталога.

+0

Не моя область знаний, но у меня был php_admin_flag, выделенный как что-то еще, чтобы добавить к этому. Добавьте «php_admin_flag engine off» ниже строки «Параметры». \t AllowOverride None \t Опции -ExecCGI \t php_admin_flag двигатель выключен Jake