ProfiPHPProfiPHP
Категория: Директивы PHP

Директива Disable_functions

Для обеспечения дополнительной безопасности работающих скриптов на языке PHP, в конфигурационном файле Php.ini существует директива Disable_functions, задачей которой является осуществление запрета на выполнения внутренних функций PHP, указанных в ее параметре через запятую.
disable_functions string
Пример использования Disable_functions:
disable_functions = fopen, fwrite
С помощью директивы Disable_functions отключают следующие основные потенциально опасные параметры:

- возможность вызова внешних программ;

- открытие файловых указателей процессов;

- выполнение команд в оболочке/shell;

- получение всех опций конфигурации и информации об операционной системе;

- получение информации о пользователе, группах, правах на файлы.

Рекомендуется запрещать функции:
disable_functions = system, exec, passthru, popen, proc_open, shell_exec, eval, phpinfo
При данной реализации, вызов функции Phpinfo будет возвращать ошибку:
Warning: phpinfo() has been disabled for security reasons in … on line...
Также следует заметить, что только внутренние функции подвержены влиянию директивы Disable_functions, запретить использование пользовательских функций невозможно.

Директива Disable_functions относиться к режиму PHP_INI_SYSTEM (более детально в статье: Установка параметров конфигурации PHP), поэтому значение может быть установлено в Php.ini или Httpd.conf, то есть, данную директиву нельзя изменять функцией Ini_set или директивой Php_value, и переназначать индивидуальным значением для конкретного виртуального хоста или каталога.
echo ini_set( 'disable_functions', "popen") ? 'работает' : 'не работает';
Если прописать в файле .htaccess
php_value disable_functions = system
Сгенерируется ошибка:
500 Internal Server Error
Проверить статус директивы можно так:
echo ini_get( 'disable_functions' );

Добавить комментарий

Имя:
Текст комментария: