Безопасное выполнение пользовательских PHP-скриптов на сервере - PullRequest
5 голосов
/ 07 августа 2009

Я пишу совместный проект, разработанный для того, чтобы пользователи могли вносить код. Пользователи смогут расширять класс, добавлять функциональные возможности и т. Д. И отправлять код обратно на сервер для регулярного выполнения.

Есть ли безопасный способ выполнения PHP-кода пользователя? Надежный метод дезинфекции? Как насчет бесконечных петель? Или я должен предложить другой язык сценариев?

Ответы [ 3 ]

6 голосов
/ 07 августа 2009
  • JailRoot для DocumentRoot

  • SafeMode ON для доступа к файлам только в определенных каталогах

  • Использование MPM для каждого пользователя для ограничения системы
    ресурсы для процесса apache

  • Установка безопасных настроек php.ini для памяти предел и max_execution_time

И, как отметил Сагги Малачи, это очень экспериментально, вы должны отслеживать действия на сервере и иметь резервные сценарии, например. cronjobs наблюдает за средней загрузкой, если loadaverage превышает пороговое значение, остановите apache и sendmail.

Другая хорошая идея - скомпилировать свой собственный php и запретить доступ к функциям php, которые могут быть «использованы» вашими пользователями.

0 голосов
/ 07 августа 2009

Возможно, я мог бы использовать Javascript на стороне сервера вместо SpiderMonkey

Звучит намного безопаснее!

0 голосов
/ 07 августа 2009

Защита от доступа или изменения файлов пользователями может быть осуществлена ​​с помощью safemode .

Защита от бесконечных циклов требует установки определенного времени, которое интерпретатор php получает для создания сайта. set_time_limit

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

Вероятно, есть много других более серьезных вопросов. Это нелегкая задача.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...