У меня есть необычная ситуация, где мне нужны многочисленные пользователи, чтобы смочь загрузить и выполнить код PHP на моем сервере Apache, но я не могу позволить одному пользователю получать доступ к источнику другого пользователя PHP (если конкретные примеры заставляют Вас чувствовать себя лучше, предположить, что я размещаю PHP программирование конкуренции).
Вот то, что я имею до сих пор в PHP.ini:
disable_functions = readfile, fpassthru, file, file_get_contents, system, fopen, symlink, rename, copy, exec, passthru, pcntl_exec, backtick_operator, shell_exec, popen, proc_open
Что другие функции я должен был бы добавить к этому списку, чтобы препятствовать тому, чтобы код PHP получил доступ к локальным файлам (и следовательно другой источник PHP?)?
Кажется, что необходимо включить Безопасный режим PHP, это отключит все соответствующие функции.
(Обратите внимание, что это было depreacited в 5,3 и удалило в PHP6),
Также смотрите на http://www.suphp.org/, который выполняет Сценарии PHP с полномочиями пользователя вместо пользователя, которого веб-сервер выполняет как. Если Вы удостоверитесь, что веб-сервер может прочитать каталог (но не обязательно сам файл PHP), то он сможет выполнить эти файлы с полномочиями пользователя. Другие пользователи не должны мочь считать или получить доступ к ним в этом случае. Это должно быть более корректным и безопасным способом обработать это.
Вместо того, чтобы пытаться обработать это в PHP, я повысил бы слоя или два, и Apache использования + учетные записи Unix для разделения вещей - например, с помощью suexec для разделения процессов пользователя.