У меня нет на самом деле "ответа" для вас, но, надеюсь, могу предложить какой-то совет и несколько вещей, о которых стоит подумать ...
Это не похоже на легкую задачу.И подход, который вы так далеко удаляете от «опасного» кода, это определенно не очень хорошая идея. много совпадений между "кодом, который можно сделать опасным" и "стандартным кодом, который ваши пользователи захотят использовать".
Похоже, эта задача будет выполнятьсянамного глубже, чем просто сам код.Процесс на сервере, который выполняет код, должен быть изолированным, сам сервер должен быть изолированным и т. Д. Некоторые вопросы, которые следует задать себе:
- Какая учетная запись пользователя используется на сервере при выполнении этогокод?
- Какие разрешения имеет эта учетная запись?Может ли это повлиять на что-нибудь еще на сервере?
- Что этот сервер может делать в сети?Доверяет ли остальная часть сети что-либо, исходящее с этого сервера?
- и т. Д.
Например, выполняется ли код PHP, скажем, в том же пользовательском контексте, что и ваш вебсервер?Апач, например?Если это так, то пользовательский код может потенциально использоваться для перенастройки вашего веб-сервера, открывая его для большего количества уязвимостей.Работает ли он с правами root или имеет доверенный доступ ко всему, что работает с правами root?
Последствия для безопасности выполнения кода, представленного пользователем на вашем сервере, выходят далеко за рамки только веб-приложения, принимающего код.