4

У меня необычная ситуация, когда мне нужно, чтобы несколько пользователей могли загружать и выполнять код 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?)?

3 ответа3

1

Пожалуйста, взгляните также на http://www.suphp.org/, где исполняются сценарии PHP с правами пользователя, а не пользователь, от которого работает веб-сервер. Если вы убедитесь, что веб-сервер может читать каталог (но не обязательно сам файл PHP), он сможет выполнять эти файлы с разрешениями пользователя. Другие пользователи не должны иметь возможность читать или получать к ним доступ в этом случае. Это должен быть более изящный и безопасный способ справиться с этим.

0

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

(Обратите внимание, что это было отменено в 5.3 и удалено в PHP6)

0

Вместо того, чтобы пытаться справиться с этим в PHP, я бы повысил уровень или два и использовал бы учетные записи Apache + unix для разделения вещей - например, с помощью suexec, чтобы разделить процессы пользователя.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .