php safe mode как включить
Php safe mode как включить
Безопасный режим PHP это попытка разрешения проблемы безопасности совместно используемого сервера. Архитектурно некорректно пытаться решить эту проблему на уровне PHP, но, поскольку альтернативы уровня web-сервера и ОС не слишком реалистичны, многие, особенно ISP, используют safe mode.
Таблица 23-1. Директивы конфигурации, управляющие режимом safe mode
Директива | Значение по умолчанию |
---|---|
safe_mode | Off |
safe_mode_gid | 0 |
safe_mode_include_dir | «» |
safe_mode_exec_dir | 1 |
open_basedir | «» |
safe_mode_allowed_env_vars | PHP_ |
safe_mode_protected_env_vars | LD_LIBRARY_PATH |
disable_functions | «» |
Когда safe_mode включён/on, PHP проверяет, совпадает ли owner/владелец текущего скрипта с owner файла, которым оперирует функция работы с файлами. Например:
Запуск на выполнение этого script.php
приводит к такой ошибке, если safe mode активен:
Если вместо safe_mode вы установите директорию open_basedir, то все операции с файлами будут проводиться только с файлами в пределах этой директории. Например (пример Apache httpd.conf):
Если вы запустите тот же самый скрипт script.php с установкой open_basedir, то результат будет таким:
то мы получим на выводе:
Это, скорее всего, неполный и, возможно, не вполне корректный листинг функций, ограниченных режимом safe mode.
Безопасный Режим/Safe Mode
Безопасный режим PHP это попытка разрешения проблемы безопасности совместно используемого сервера. Архитектурно некорректно пытаться решить эту проблему на уровне PHP, но, поскольку альтернативы уровня web-сервера и ОС не слишком реалистичны, многие, особенно ISP, используют safe mode.
Таблица 23-1. Директивы конфигурации, управляющие режимом safe mode
Директива | Значение по умолчанию |
---|---|
safe_mode | Off |
safe_mode_gid | 0 |
safe_mode_include_dir | "" |
safe_mode_exec_dir | 1 |
open_basedir | "" |
safe_mode_allowed_env_vars | PHP_ |
safe_mode_protected_env_vars | LD_LIBRARY_PATH |
disable_functions | "" |
Когда safe_mode включён/on, PHP проверяет, совпадает ли owner/владелец текущего скрипта с owner файла, которым оперирует функция работы с файлами. Например:
Запуск на выполнение этого script.php
приводит к такой ошибке, если safe mode активен:
Однако может быть такое окружение, когда строгая проверка UID не подходит, а достаточно менее строгой проверки GID. Это поддерживается посредством переключателя safe_mode_gid. Установка его в On выполняет проверку GID, а установка Off (по умолчанию) выполняет проверку UID.
Если вместо safe_mode вы установите директорию open_basedir, то все операции с файлами будут проводиться только с файлами в пределах этой директории. Например (пример Apache httpd.conf):
Если вы запустите тот же самый скрипт script.php с установкой open_basedir, то результат будет таким:
Вы можете также отключить отдельные функции. Обратите внимание, что директива disable_functions не может использоваться вне файла php.ini, то есть вы не можете отключать функции на уровне директории или на уровне виртуального хоста в вашем файле httpd.conf.
Если добавить в файл php.ini:
то мы получим на выводе:
Функции, ограниченные/отключённые режимом safe mode
Это, скорее всего, неполный и, возможно, не вполне корректный листинг функций, ограниченных режимом safe mode.
Php safe mode как включить
дМС ТБВПФЩ SAMS ОЕПВИПДЙНП ХУФБОПЧЙФШ http УЕТЧЕТ Apache, НПДХМШ php ДМС apache Й ЛПОУПМШОЩК php. ч php ДПМЦОБ ВЩФШ БЛФЙЧЙТПЧБОБ РПДДЕТЦЛБ mysql.
тБЪТЕЫЙФЕ Ч httpd.conf ЪБЗТХЪЛХ ЖБКМПЧ ОБ УЕТЧЕТ ЮЕТЕЪ web ЙОФЕТЖЕКУ:
рТЙ ЛПОЖЙЗХТЙТПЧБОЙЙ sams ОЕПВИПДЙНП ЪБДБФШ ТБУРПМПЦЕОЙЕ root ДЙТЕЛФПТЙЙ apache. лПОЖЙЗХТБФПТ SAMS ЙЭЕФ root ДЙТЕЛФПТЙА apache РП РХФЙ /var/www/html ЙМЙ /var/www/htdocs. еУМЙ Ч ЧБЫЕК УЙУФЕНЕ РХФШ ОЕ УПЧРБДБЕФ, ОЕПВИПДЙНП ЪБРХУФЙФШ ЖБКМ configure sams У ЛМАЮЕН
—with-httpd-locations=PATH
Ч РТПГЕУУЕ ЙОУФБММСГЙЙ ВХДЕФ УПЪДБОБ УЙНЧПМЙЮЕУЛБС УУЩМЛБ ЙЪ ЛПТОЕЧПК ДЙТЕЛФПТЙЙ УЕТЧЕТБ APACHE ОБ ДЙТЕЛФПТЙА, Ч ЛПФПТПК ОБИПДСФУС ЖБКМЩ SAMS. йОБЮЕ ЬФП НПЦОП УДЕМБФШ УБНПНХ:
еУМЙ Х ЧБУ ЧПЪОЙЛМЙ РТПВМЕНЩ У ЛПДЙТПЧЛПК ЧЕВ ЙОФЕТЖЕКУБ,
ОБДП Ч ЛПОЖЙЗЕ БРБЮБ ЪБДБФШ РБТБНЕФТ
AddDefaultCharset Off
ч ЖБКМЕ php.ini (Ч ДЙТЕЛФПТЙЙ /etc Й ДЙТЕЛФПТЙЙ http УЕТЧЕТБ) ТБУЛПННЕОФЙТХКФЕ ЧЩЪПЧ ВЙВМЙПФЕЛЙ РПДДЕТЦЛЙ mysql:
extensions=mysql.so
C ЧЕТУЙЙ 1.0 SAMS ТБВПФБЕФ Ч safe_mode php
оБУФТЙЧБЕН php ДМС ТБВПФЩ Ч ТЕЦЙНЕ safe mode
ЧЛМАЮБЕН ТЕЦЙН safe mode. дМС ЬФПЗП ЧЩУФБЧМСЕН РБТБНЕФТ safe_mode:
safe_mode = On
SAMS ДМС ОЕЛПФПТЩИ ЖХОЛГЙК WEB ЙОФЕТЖЕКУБ ЙУРПМШЪХЕФ УЙУФЕНОЩЕ ЛПНБОДЩ, ОБРТЙНЕТ wbinfo. ч ТЕЦЙНЕ safe_mode php ВМПЛЙТХЕФ ДПУФХР Л УЙУФЕНОЩН ЛПНБОДБН. Php РПЪЧПМСЕФ ЧЩРПМОСФШ УЙУФЕНОЩЕ ЛПНБОДЩ, ТБУРПМПЦЕООЩЕ Ч ЛБФБМПЗЕ, ЪБДБООПН РБТБНЕФТПН safe_mode_exec_dir. йЪНЕОСЕН ЬФПФ РБТБНЕФТ:
safe_mode_exec_dir = «/usr/local/share/sams/bin»
дБМЕЕ ТБЪТЕЫБЕН ЙУРПМОЕОЙЕ УЙУФЕНОЩИ УЛТЙРФПЧ ЙЪ ЛПДБ php. йЭЕН Ч ЖБКМЕ ЛПОЖЙЗХТБГЙЙ РБТБНЕФТ
disable_functions = «chdir,dl,ini_get_all,phpinfo,system,shell_exec,popen,proc_open,exec,passthru,pcntl_exec»
Й ЕУМЙ ПО ОЕ РХУФПК, ХВЙТБЕН ЙЪ ОЕЗП ЪБРТЕФ ЧЩЪПЧБ ЖХОЛГЙК phpinfo system shell_exec exec
Php safe mode как включить
Безопасный режим PHP это попытка разрешения проблемы безопасности совместно используемого сервера. Архитектурно некорректно пытаться решить эту проблему на уровне PHP, но, поскольку альтернативы уровня web-сервера и ОС не слишком реалистичны, многие, особенно ISP, используют safe mode.
Таблица 23-1. Директивы конфигурации, управляющие режимом safe mode
Директива | Значение по умолчанию |
---|---|
safe_mode | Off |
safe_mode_gid | 0 |
safe_mode_include_dir | «» |
safe_mode_exec_dir | 1 |
open_basedir | «» |
safe_mode_allowed_env_vars | PHP_ |
safe_mode_protected_env_vars | LD_LIBRARY_PATH |
disable_functions | «» |
Когда safe_mode включён/on, PHP проверяет, совпадает ли owner/владелец текущего скрипта с owner файла, которым оперирует функция работы с файлами. Например:
Запуск на выполнение этого script.php
приводит к такой ошибке, если safe mode активен:
Если вместо safe_mode вы установите директорию open_basedir, то все операции с файлами будут проводиться только с файлами в пределах этой директории. Например (пример Apache httpd.conf):
Если вы запустите тот же самый скрипт script.php с установкой open_basedir, то результат будет таким:
то мы получим на выводе:
Это, скорее всего, неполный и, возможно, не вполне корректный листинг функций, ограниченных режимом safe mode.
Безопасность и безопасный режим
Имя | По умолчанию | Меняемо | Список изменений |
---|---|---|---|
safe_mode | «0» | PHP_INI_SYSTEM | Удалена в PHP 5.4.0. |
safe_mode_gid | «0» | PHP_INI_SYSTEM | Удалена в PHP 5.4.0. |
safe_mode_include_dir | NULL | PHP_INI_SYSTEM | Удалена в PHP 5.4.0. |
safe_mode_exec_dir | «» | PHP_INI_SYSTEM | Удалена в PHP 5.4.0. |
safe_mode_allowed_env_vars | «PHP_» | PHP_INI_SYSTEM | Удалена в PHP 5.4.0. |
safe_mode_protected_env_vars | «LD_LIBRARY_PATH» | PHP_INI_SYSTEM | Удалена в PHP 5.4.0. |
Для подробного описания констант PHP_INI_*, обратитесь к разделу Где могут быть установлены параметры конфигурации.
Краткое разъяснение конфигурационных директив.
Данная возможность была помечена УСТАРЕВШЕЙ начиная с версии PHP 5.3.0 и была УДАЛЕНА в версии PHP 5.4.0.
По умолчанию в безопасном режиме при открытии файла выполняется проверка значения UID. Для того, чтобы немного смягчить это условие и выполнять проверку GID, необходимо установить значение on для флага safe_mode_gid. Определяет, использовать ли проверку UID ( FALSE ) или GID ( TRUE ) проверку при обращении к файлу.
При подключении файлов, расположенных в указанной директории и всех ее подкаталогах, проверка на соответствие значений UID/GID не выполняется (в случае, если установленная директория не указана в include_path, необходимо указывать полный путь при включении).
Значением этой директивы может быть список каталогов, разделенных двоеточием (точкой с запятой на Windows-системах), что аналогично синтаксису include_path. Указанное значение в действительности является префиксом, а не названием директории. Это означает, что запись «safe_mode_include_dir = /dir/incl» позволяет подключать файлы, находящиеся в директориях «/dir/include» и «/dir/incls«, в случае, если они существуют. Если вы хотите указать доступ к конкретной директории, используйте завершающий слеш, например: «safe_mode_include_dir = /dir/incl/» Если значение этой директивы пусто, то никакие файлы с отличающимися UID/GID не могут быть подключены. safe_mode_exec_dir string
В случае, когда PHP работает в безопасном режиме, system() и другие функции запуска программ отклоняют выполнение программ, находящихся вне данной директории. Вам также придется использовать / в качестве разделителя пути на всех окружениях, включая Windows.
В случае, если этой директиве указать пустое значение, пользователь получит возможность модифицировать ЛЮБУЮ переменную окружения!
В случае, если включена директива safe_mode, PHP проверит, совпадает ли владелец скрипта и владелец файла или директории, которыми оперирует скрипт. Например:
Тем не менее, предусмотрена возможность вместо проверки на соответствие UID использовать более мягкую проверку на соответствие GID. Для этого необходимо использовать директиву safe_mode_gid. В случае, если она установлена значением On, используется более мягкая проверка GID. В противном случае, если установлено значение Off (значение по умолчанию), выполняется более строгая проверка на соответствие UID.
В качестве альтернативы директиве safe_mode вы можете ограничить все выполняемые скрипты жестко заданным деревом директорий при помощи опции open_basedir. Например (фрагмент конфигурационного файла httpd.conf ):
Разумеется, эти ограничения PHP не работают в запускаемых программах.