Безопасность в PHP

31.01.2007

Защищенный режим в PHP - это попытка решить проблему безопасности на совместно используемых серверах. Несмотря на то, что концептуально неверно решать эту проблему на уровне PHP, но поскольку альтернативы уровня веб-сервера или операционной системы на сегодняшний день отсутствуют, многие пользователи, особенно провайдеры, используют именно защищенный режим.
Безопасность и защищенный режим Таблица 1. Конфигурационные опции, управляющие защищенным режимом и вопросами безопасности
Включает/отключает защищенный режим в PHP.
По умолчанию в защищенном режиме при открытии файла выполняется проверка значения UID. Для того, чтобы немного смягчить это условие и выполнять проверку GID, необходимо установить значение on для флага safe_mode_gid. Определяет, использовать или нет проверку
FALSE TRUE ) проверку при обращении к файлу.
При подключении файлов, расположенных в указанной директории и всех ее подкаталогах, проверка на соответствие значений
не выполняется (В случае, если установленная директория не указана в
, необходимо указывать полный путь при включении).
Начиная с PHP 4.2.0 значением этой директивы может быть список каталогов, разделенных двоеточием (точкой с запятой на windows-системах), что аналогично синтаксису
.
Указанное значение в действительности является префиксом, а не названием директории. Это означает, что запись "safe_mode_include_dir = /dir/incl" позволяет подключать файлы, находящиеся в директориях "/dir/include" и "/dir/incls", в случае, если они существуют. Если вы хотите указать доступ к конкретной директории, используйте завершающий слеш, например: "safe_mode_include_dir = /dir/incl/".
В случае, когда PHP работает в защищенном режиме,
и другие отклоняют выполнение программ, находящихся вне данной директории.
Возможность устанавливать переменные окружения - потенциальная брешь в безопасности. Значением этой директивы является список префиксов, разделенных двоеточиями. В защищенном режиме пользователь может модифицировать только те переменные окружения, имена которых начинаются с одного из указанных префиксов. По умолчанию, пользователю доступны переменные, которые начинаются с префикса PHP_ (например, PHP_FOO=BAR).
Замечание: В случае, если этой директиве указать пустое значение, пользователь получит возможность модифицировать любую переменную окружения!
Эта директива содержит список переменных окружения, разделенных двоеточием, значение которых пользователь не сможет изменить, используя функцию
. Значения этих переменных остаются защищенными, даже если их модификация разрешена директивой safe_mode_allowed_env_vars.
Ограничивает список файлов, которые могут быть открыты в PHP, указанным деревом директорий
независимо от того, используется защищенный режим или нет.
Каждый раз, когда скрипт пытается открыть файл, например, при помощи функции
или , проверяется месторасположение файла. В случае, если он находится вне указанного дерева директорий, PHP отказывает в открытия файла. Все символические ссылки распознаются и преобразуются, поэтому обойти это ограничение при помощи символических ссылок невозможно.
.
указывает, что базовой следует считать директорию, в которой расположен сам скрипт. В этом случае следует быть осторожным, так как рабочую
директорию скрипта можно легко изменить при помощи функции
.
httpd.conf
(например, для некоторых виртуальных хостов) точно таким же образом как и любая другая директива: "php_admin_value open_basedir none".
Для Windows-систем разделителем списка директорий служит точка с запятой. Для всех других операционных систем в качестве разделителя используется двоеточие. В случае, если PHP работает как модуль веб-сервера Apache, все указания open_basedir для родительских директорий наследуются.
Указанное значение в действительности является префиксом, а не названием директории. Это означает, что запись "safe_mode_include_dir = /dir/incl" позволяет открывать файлы, находящиеся в директориях "/dir/include" и "/dir/incls", в случае, если они существуют. Если вы хотите указать доступ к конкретной директории, используйте завершающий слеш, например:
"safe_mode_include_dir = /dir/incl/".
Замечание: Возможность работы с несколькими директориями добавлена в версии 3.0.7.
По умолчанию разрешен доступ ко всем файлам.
Эта директива позволяет вам запретить некоторые функции из соображений безопасности. В качестве значения она принимает список функций, разделенных двоеточием. disable_functions не зависит от того, используется
или нет.
php.ini
. Вы не можете использовать ее, например, в
httpd.conf
.
Эта директива позволяет вам запретить некоторые классы из соображений безопасности. В качестве значения она принимает список класов, разделенных двоеточием. disable_classes не зависит от того, используется
или нет.
php.ini
. Вы не можете использовать ее, например, в
httpd.conf
.
Замечание: Эта директива доступна, начиная с PHP 4.3.2
Ознакомьтесь также со следующими конфигурационными директивами: ,
, и
В случае, если директива
установлена значением on, PHP проверит, совпадает ли владелец скрипта и владелец файла или директории, которыми оперирует скрипт. Например:
выполние срипта script.php
Тем не менее, предусмотрена возможность вместо проверки на соответствие
. Для этого необходимо использовать директиву
. В случае, если она
установлена значением
, используется более мягкая проверка
. В противном случае, если установлено значение
(значение по умолчанию), выполняется более строгая проверка на соответствие
.
В качестве альтернативы директиве вы можете ограничить все выполняемые скрипты жестко заданным деревом директорий при помощи опции . Например (фрагмент конфигурационного файла
httpd.conf
При попытке выполнить тот же самый скрипт script.php с указанной опцией
Вы также можете запретить отдельные функции. Следует заметить, что директива
php.ini
, это означает, что вы не можете, отредактировав
httpd.conf
, установить индивидуальные значения для конкретного виртуального хоста или каталога.
Если добавить в
php.ini
Ограниченные или недоступные в защищенном режиме функции PHP Ниже приведен, вероятно, неполный список функций, ограниченных в защищенном режиме.
Таблица 2. Функции, ограниченные в безопасном режиме

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

Рубрики: Без рубрики |

Оставить комментарий

Заметьте: Включена проверка комментариев. Нет смысла повторно отправлять комментарий.

Подпишитесь на все обновления блога по e-mail:

Категории

Свежие записи

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

Архив:

Поиск:

чехлы для лыж

Мета: