Подтвердить что ты не робот

Как я могу защитить каталог загрузки изображений на веб-сервере?

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

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

Будут ли настройки chmod?

chmod 744 directory/   
4b9b3361

Ответ 1

В этом контексте есть два возможных значения для "исполняемого файла", и обе вещи необходимо настроить против.

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

  • Файл, который может быть прочитан и обработан как script веб-сервером.

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

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

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

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

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

chmod 0600 <uploaded-file>

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

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

Работа с веб-сервером excutable

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

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

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

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

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

Ответ 2

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

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