Отключаем небезопасные функции PHP

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

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

apache_note,apache_setenv,chgrp,closelog,debugger_off,debugger_on,define_sys,define_syslog_variables,diskfreespace,dl,escapeshellarg,escapeshellcmd,exec,getmypid,getmyuid,ini_restore,leak,listen,openlog,passthru,pclose,pcntl_alarm,pcntl_exec,pcntl_fork,pcntl_getpriority,pcntl_get_last_error,pcntl_setpriority,pcntl_signal,pcntl_signal_dispatch,pcntl_sigprocmask,pcntl_sigtimedwait,pcntl_sigwaitinfo,pcntl_strerror,pcntl_wait,pcntl_waitpid,pcntl_wexitstatus,pcntl_wifexited,pcntl_wifsignaled,pcntl_wifstopped,pcntl_wstopsig,pcntl_wtermsig,php_uname,popen,posix,posix_ctermid,posix_getcwd,posix_getegid,posix_geteuid,posix_getgid,posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid,posix_getpwnam,posix_getpwuid,posix_getrlimit,posix_getsid,posix_getuid,posix_isatty,posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,posix_setpgid,posix_setsid,posix_setuid,posix_times,posix_ttyname,posix_uname,proc_close,proc_get_status,proc_nice,proc_open,proc_terminate,shell_exec,show_source,syslog,system,url_exec,_getppid

Пример:

disable_functions = fopen, fwrite

После внесения изменений необходимо перезапустить  Apache или php-fpm чтобы изменения вступили в силу.

httpd -k restart

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

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 — получает системное имя, возвращает хэш строк с информацией о системе

Рассказать друзьям


Все права на материалы, размещенные на сайте, защищены законодательством об авторском праве и смежных правах и не могут быть воспроизведены или каким либо образом использованы без письменного разрешения правообладателя и проставления активной ссылки на главную страницу портала IT Serebra (itserebra.ru) рядом с использованными материалами. За содержание рекламных материалов редакция ответственности не несет. Внимание! Данный интернет-сайт носит исключительно информационный характер и ни при каких условиях не может считаться публичной офертой, которая определяется положениями Статьи 437 (2) Гражданского кодекса РФ. Пожалуйста, уточняйте точную стоимость, наличие товара и иные условия у продавцов. Они могут отличаться от опубликованных на сайте.
Настоящее согласие действует с момента его предоставления и в течение всего периода использования сайта. В случае отказа от обработки персональных данных метрическими программами я проинформирован о необходимости прекратить использование сайта или отключить файлы cookie в настройках браузера.