Каковы побочные эффекты включения PROCESS CONTROL (PCNTL) в PHP в среде веб-сервера?


ниже цитата из http://www.php.net/manual/en/intro.pcntl.php

Управление процессом не должно быть включено в среде веб-сервера и непредвиденные результаты 
может произойти, если какие-либо функции управления процессом используются в среде веб-сервера.

Каковы побочные эффекты включения его на моем веб-сервере? каковы угрозы и проблемы безопасности в этом?

Большое спасибо за вашу помощь

2 ответа

Решение

Существует большая разница между включением расширения и использованием функций. Просто включение расширения не должно иметь никаких побочных эффектов.

С другой стороны, доступные функции могут привести к некоторым неприятностям. Можно злоупотреблять вилками, посылать сигналы другим процессам, приказывая им выполнять действия, которые иначе вам не нужны, и можно изменять приоритеты процессов с тем же владельцем, что и у демона веб-сервера.

Другими словами, это не то, что вы хотели бы включить, если вы не контролируете весь PHP, работающий на этом компьютере, как в среде общего хостинга.

Если вы включите это, ненадежный автор PHP-кода может разбомбить ваш сервер, от которого труднее защититься, чем вы думаете.

Ненадежный автор PHP-кода может убить или приостановить работу веб-сервера или любых процессов, которые выполняются от имени того же пользователя, что и веб-сервер. (Если веб-сервер запускает ненадежный код PHP от имени пользователя root, он может остановить или приостановить все процессы на сервере.) Или, если вы используете FastCGI или аналогичные инструменты, он может убить или приостановить выполнение любых других задач от имени того же пользователя.

Ненадежный автор PHP-кода может вызвать wait(2) Семейство функций, которые будут отчаянно путать сервер или интерфейс FastCGI. Это может повесить его, это может привести к сбою, зависит от сервера.

Конечно, флаг управления процессами PHP на самом деле просто рекомендательный - ошибки в интерпретаторе PHP позволят вредоносному коду создать все эти вещи и многое другое. Эта настройка просто для того, чтобы честные программисты были честными.

Любой код, в котором вы работаете mod_php (или аналогичные технологии для других серверов) будут иметь полный доступ ко всему, что может делать веб-сервер.

Любой код, который вы запускаете в FastCGI (или аналогичных технологиях), будет иметь полный доступ ко всему, что может делать система FastCGI, на основе управления доступом операционной системы.

Если вы действительно хотите ограничить то, что может делать ненадежный код PHP, я предлагаю рассмотреть различные механизмы обязательного контроля доступа, такие как AppArmor, TOMOYO, SELinux или SMACK.

Другие вопросы по тегам