PHP - отключение функций

Версия для печатиОтправить другуPDF version

PHP logo

 

Работая над безопасностью хостинг-сервера, совсем неплохо отключать "небезопасные" возможности PHP.

В настройках по умолчанию, используя PHP, есть возможность выполнять системные команды через PHP-скрипты. Можно просмотреть содержимое директорий с помощью утилиты ls, выполнить вывод файла с помощью утилиты cat, видеть свои процессы, etc.

Ети возможности серьезно подрывают безопасность сервера, особенно в случае хостинг-сервера. Чтобы повысить безопасность, отключим некоторые функции. Для этого в файле /usr/local/etc/php.ini допишем функции, которые хотим запретить, в параметр disable_functions:

disable_functions = exec,ini_get,ini_get_all,parse_ini_file,passthru,php_uname,popen,proc_open,shell_exec,show_source,system

После внесения изменений необходимо дать команду Apache перечитать изменения:

# apachectl graceful

Описание указанных функций:

  • exec - вызов внешней программы
  • ini_get - получает значение опции конфигурации
  • ini_get_all - получает все опции конфигурации
  • parse_ini_file - разбирает файл конфигурации
  • passthru - вызов внешней программы и вывод "сырых" результата на дисплей
  • php_uname - возвращает информацию об ОС, на которой php был построен
  • popen - открывает файловый указатель процесса
  • proc_open - выполняет команду и открывает файловый указатель для ввода/вывода
  • shell_exec - выполняет команду в оболочке/shell и возвращает полный вывод в виде строки
  • show_source - вывод исходного текста текущей веб страницы
  • system - вызов внешней программы и вывод результата на дисплей

 Также стоит подумать над отключением таких функций:

  • diskfreespace - псевдоним функции disk_free_space
  • disk_free_space - получить размер доступного пространства в каталоге
  • disk_total_space - возвращает общий размер диска
  • eval - вычисляет строку, заданную в code_str, как код PHP (eval ( string code_str))
  • fileperms - получить информацию о правах на файл
  • fopen - открывает файл или URL
  • opendir - возвращает дескриптор каталога для последующего использования с функциями closedir(), readdir() и rewinddir()
  • phpinfo - выводит всю информацию об php, Ос
  • phpversion - выводит версию php
  • posix_getpwuid - возвращает информацию о пользователе по его user id
  • posix_getgrgid - возвращает информацию о группе по её group id
  • posix_uname - получает системное имя, возвращает хэш строк с информацией о системе

Примечание: после отключения функции popen перестали отрисовываться графики в Cacti, поэтому для определенных ресурсов эти функции все же можно оставить включенными. Конечно, необходимо быть уверенным в том, что возможность заливать и модифицировать файлы есть только у доверенного круга лиц.

Ваша оценка: Нет Средняя: 4.5 (6 голосов)

Re: PHP - отключение функций

Спасибо, хорошая статья. Можно было бы добавить информацию о том, как разрешить данные функции в <VirtualHost> в Apache. То есть "Запретить все и разрешить только нужные"

Re: PHP - отключение функций

Безопасность это конечно хорошо. Но вот например с запрещенной функцией proc_open не работает нормально просмотр картинок и загрузка их на сервер в таких редакторах как tinyMCE и CKEditor - выдает ошибку  Unable To Connect To Backend    Наверное нужно как то обеспечивать безопасность, а не просто отключив нужные функции...

Re: PHP - отключение функций

Отключаем глобально.

Если есть необходимость - включаем, или подключаем локально через .htaccess. Тоесть нужно разрешить только то, что действительно необходимо, по возможности - только в определенном каталоге.

Вставай, Україно!

Литература