Отключаем запуск внешних программ через PHP

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

Это очень полезная возможность при создании сервисов и других приложений посложнее сайтиков.

Но на серверах, на которых работают только типичные сайты (например, на CMF или CMS), данные функции могут быть использованы скрипт-кидди и прочими хакерами, эксплуатирующими уязвимости тех же CMS. И, даже ограничивая поле деятельности сайта в рамках его каталога хоста, с помощью запуска внешних программ разрушительные действия могут вырваться за пределы этой песочницы.

В прежние времена в PHP существовал так называемый «Безопасный режим», который был выпелен с приходом PHP 5.4. И сейчас, когда на продакшне используется PHP 7.0, а то и 7.1, отключить запуск внешних программ можно только следующим образом:

В php.ini в диррективу disable_functions нужно добавить через запятую следующие функции:

exec,passthru,proc_open,shell_exec,system

В итоге получится нечто вроде:

disable_functions = [...],exec,passthru,proc_open,shell_exec,system,

И перезагрузить PHP-FPM или Apache.

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *