У меня есть идея, которая может сработать для вас, но все зависит от того, какими возможностями обладают ваши скрипты фреймворка. Чтобы моя идея была правдоподобной с точки зрения безопасности, вам необходимо создать «песочницу» для файлов фреймворка.
Одна идея:
Что вы можете сделать (но, вероятно, более ресурсоемким), так это прочитать каждый модуль, как текстовый файл.
Затем вам нужно идентифицировать везде, что читает файл в своем скрипте. У вас есть такие вещи, как fopen для file_get_contents, чтобы рассмотреть. Вероятно, я бы сказал пользователям, что они могут только читать и записывать файлы, используя file_get_contents и file_put_contents, а затем использовать инструмент для удаления любых других функций записи / чтения файлов из своего скрипта (например, fopen).
Затем напишите свою собственную функцию для замены file_get_contents и file_put_contents, заставьте их скрипт использовать вашу функцию, а не PHP file_get_contents и file_put_contents. В вашей функции file_get_contents вы будете проверять права доступа; получают ли они доступ к вашему файлу конфигурации, да или нет, а затем возвращают строку с надписью «доступ запрещен», если они есть, или вы используете реальное file_get_contents для чтения и возврата файла, если нет.
Что касается вашего file_put_contents, вам просто нужно убедиться, что они не записывают файлы на ваш сервер (они не должны быть разрешены, представьте, что они могут сделать!), В качестве альтернативы, вы могли бы использовать CHMOD, чтобы остановить это.
Как только вы по существу перезаписали модуль в памяти, чтобы обеспечить его безопасность, вы затем используете функцию «exec» для его выполнения.
Это заняло бы значительный объем работы - но это единственный чистый способ PHP, о котором я могу думать.