PHP в деталях



         

По следам виртуальных директорий, или как можно настроить VirtualHost - часть 7


# 1. Запрещается изменять переменные окружения для запускаемых программ, через putenv();

# 2. Запрещается запускать программы через exec(),

# находящиеся вне указанной директории, см. safe_mode_exec_dir в php.ini;

# 3. Файловые операции корректируются:

php_admin_value open_basedir "/www/имя_сайта/" php_admin_value doc_root "/www/имя_сайта/" # ни одна из файловых функций не сможет открыть файл, если он не входит

# в указаное поддерево (их, кстати, можно указать несколько).

# Подробнее на http://www.php.net/manual/en/features.safe-mode.php

# - disable_functions данная директива позволяет отключить некоторые функции

# (конечно можно это сделать при компиляции, но "геморроя" тогда больше), которые могут

# слишком много и быстро рассказать о конфигурации сервера, например phpinfo()

# или слишком много позволить пользователю, н.п. dl()

# Кстати, данная конструкция (как и некоторые другие, safe_mode_exec_dir)

# должна устанавливаться только из php.ini, т.е. глобальна в пределах одного Apache

# - На тему загрузки модулей есть специальная директива

# php_admin_flag enable_dl Off

# хотя в safe_mode функция dl() и так не доступна

# Кстати, программисту создающему сайт на домашнем сервере имеет смысл установить

# всё настройки (в том числе и по вопросам безопасности) так, как будто этот сервер,

# доступен всем Сетевым Ветрам - просто для того, чтобы потом на реальном сервере

# не вылезла какая-либо несовместимость конфигурации

# Подробности по настройке PHP

# см. http://www.php.net/manual/en/configuration.php#ini.safe-mode

# И последнее, что хотелось бы упомянуть на этут тему: если на Вашем сервере

# размещается несколько десятков или сотен серверов, и многое в их конфигурации

# однотипно, то стоит подумать над использованием одного из механизмов, подробнее

# описанных тут http://httpd.apache.org/docs/vhosts/mass.html

# а конкретно http://httpd.apache.org/docs/mod/mod_vhost_alias.html

#VirtualDocumentRoot "/www/%0/html"

# данная директива используется как шаблон в одном <VirtualHost *></VirtualHost>

# для отработки нескольких серверов вместо DocumentRoot

# в нескольких <VirtualHost *></VirtualHost>

# где %0 полное имя сервера, т.о. для заведения одного из типичных серверов

# достаточно будет только в нужном месте создать директорию... и все!

# Есть только одна проблема - в директиве php_admin_value %0 останется неизменным :(

# Ну, что ждём от Apache Team создание virtual_php_admin_value или напишем сами?

</VirtualHost>

Яцевич Роман, неважно кто по жизни

отдельное спасибо Бохонковичу Юрию, за консультации по безопасности систем на базе Unix/Linux-серверов а также Лебедеву Дмитрию, за то, что он открыл мне глаза на отнюдь не виртуальную проблему виртуальных директорий!




Содержание  Назад  Вперед