Насколько целесообразно отключать некоторые функции PHP для безопасности
Говоря о безопасности, отключение ряда «опасных» функций PHP всегда идёт на последнем месте. По-настоящему безопасным веб-сайт и веб-сервер делают:
1) хорошо написанный код
2) надлежащая фильтрация и проверка любых поступающих от пользователя данных
3) своевременное обновление программного обеспечения: начиная с самого сервера и кончая CMS
Что касается блокировки «опасных» функций, то это скорее негодные средства для обеспечения информационной безопасности сайта. Если в системе найдены уязвимости, позволяющие выполнять PHP код, то хакер сможет выполнить компрометацию системы и с использованием «безопасных» функций.
Когда нужно отключать функции PHP?
Необходимость отключения функций может понадобиться на совместно используемых веб-серверах, чтобы не позволить пользователям выполнять определённые функции. Но по факту современные провайдеры хостинг услуг движуться в противоположном направлении: открывают пользователям доступ по SSH и не отключают функции PHP поскольку, повторюсь, это не относится к вопросам безопасности. Информационная безопасность веб-сервера, в том числе совместно используемого, обеспечивается другими мерами:
1) Правильно настроенными правами на файлы и директории
2) Надёжные пароли
3) Прочее
Как отключить функции в PHP
Чтобы сделать некоторые функции недоступными, используется:
disable_functions =
Эта директива позволяет отключить некоторые функции по причинам безопасности. Она принимает список имён функций, разделённый запятыми. disable_functions не подвержена влиянию безопасного режима.
Только внутренние функции могут быть отключены с помощью этой директивы. Пользовательские функции ей не подвержены.
Эта директива должна быть установлена в php.ini. Например, её нельзя использовать в httpd.conf.
Какие функции PHP нужно отключать
Как уже было сказано, функции PHP нужно отключать по ясным для системного администратора причинам, которые и определят список функций. Если вам нужен универсальный список опасных функций, то он такой:
disable_functions =exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source
Как отключить eval в PHP
Если вы хотите отключить eval, то у вас серьёзная проблема — это не функция (это конструкция языка), поэтому с помощью disable_functions не получится отключить eval.
Для отключения eval() в PHP рекомендуют обратиться к стороннему расширению Suhosin.
Как отключить классы в PHP
Поскольку PHP это ещё и объектно-ориентированный язык, то для классов также предусмотрена возможность их отключения:
disable_classes =
Эта директива позволяет отключить некоторые классы по причинам безопасности. Она принимает список имён классов, разделённых запятыми. disable_classes не подвержена влиянию безопасного режима. Эта директива должна быть установлена в php.ini. Например, её нельзя использовать в httpd.conf.
Связанные статьи:
- Как увеличить память и время для PHP скриптов (80.7%)
- Почему не работает код в <? и ?>. Как включить поддержку сокращённых тегов в PHP. Что означает <?= (80.7%)
- PHP cURL как установить значение User Agent ИЛИ как сделать так, чтобы сервера не блокировали запросы cURL? (70.1%)
- Защита контента веб-сайта (58.9%)
- Как получить User Agent в PHP. Как настроить browscap.ini (51.7%)
- Ошибка «Cannot load modules/libphp7.so» (РЕШЕНО) (RANDOM - 51.7%)