Чат PHP-разработчиков
Логические задачи с собеседований
Отключение опасных функций в PHP

Отключение опасных функций в PHP

Если Вы хоть немного задумываетесь о безопасности своего веб-сервера, то следует отключить некоторые функции PHP, которые несут в себе потенциальную угрозу. Например, такие функции как exec() или system() позволяют выполнять внешние программы в системе, что, согласитесь, в большинстве случаев не требуется для веб-приложений. Данные функции, несомненно, помогают получить практически безграничные возможности для разработчика, однако, в то же время, при несанкционированном доступе к серверу злоумышленник может получить над ним полный контроль.

Это одна из причин, по которой ещё на этапе планирования проекта стоит избегать идей с вызовом внешних программ.

Для отключения функций следует открыть файл php.ini и добавить их в параметр disable_functions, например:

disable_functions = exec,passthru,php_uname,popen,proc_open,shell_exec,show_source,system

После сохранения конфигурации необходимо сообщить Apache об изменениях выполнив команду:

apachectl graceful

А вот список функций, рекомендуемых к отключению. Описание прилагается.

exec() - вызов внешней программы
proc_open() - выполняет команду и открывает файловый указатель для ввода/вывода
shell_exec() - выполняет команду в оболочке/shell и возвращает полный вывод в виде строки
system() - вызов внешней программы и вывод результата
passthru() - вызов внешней программы и вывод "сырых" результата
popen() - открывает файловый указатель процесса
show_source() - вывод исходного текста текущей веб страницы
disk_free_space() - получить размер доступного пространства в каталоге
diskfreespace() - псевдоним функции disk_free_space
disk_total_space() - возвращает общий размер диска
eval() - вычисляет строку, заданную в параметре, как код PHP
fileperms() - получить информацию о правах на файл
fopen() - открывает файл или URL
opendir() - возвращает дескриптор каталога для последующего использования с функциями closedir(), readdir() и rewinddir()
phpinfo() - выводит всю информацию о PHP, ОС
phpversion() - выводит версию php
posix_getpwuid() - возвращает информацию о пользователе по его user id
posix_getgrgid() - возвращает информацию о группе по её group id
posix_uname() - получает системное имя, возвращает хэш строк с информацией о системе
php_uname - возвращает информацию об ОС, на которой php был построен
ini_get() - получает значение опции конфигурации
ini_get_all() - получает все опции конфигурации
parse_ini_file() - разбирает файл конфигурации
Присоединяйтесь к нам в ВКонтакте и в Facebook, чтобы не пропустить новые уроки. А также вступайте в наш чат PHP-разработчиков в Telegram.
Об авторе
Generic placeholder image
Артём Ивашкевич
Занимаюсь программированием более трех лет, работаю над проектами с миллионной посещаемостью. В свободное время обучаю программированию на PHP других людей, потому что мне это нравится. Если вы интересуетесь темой IT и хотели бы стать разработчиком, рекомендую прочитать статью о том, как я стал программистом.
Читайте также
Комментарии