Вопрос уже поднимался
мной же, но тогда никто не дал мне ответа, который мне бы помог. Разрабатывается фреймворк для корпоративных интранетов, для большей гибкости и удобства разработки решено использовать модульную схему: есть ядро, состоящее из библиотек, и модули, подключаемые к этому ядру и использующее библиотеки для взаимодействия с базой данных, конфигурацией и проч. Стоит вопрос, как запретить модулю напрямую обращаться к БД, читать файлы и выполнять прочие потенциально опасные действия. Например, модуль может использовать для обращения к БД написанную библиотеку-обертку, но
не может использовать напрямую MySQLi или PDO.
Был вариант использовать
Suhosin и eval, но он не подходит по двум причинам:
- Фреймворк становится тяжело переносимым, то есть для его работы нужно как минимум собирать и устанавливать Suhosin. Получаем фреймворк, работающий только на VPS/VDS.
- Для передачи данных модулю нужно ставить дичайшие костыли типа манифестирования параметров функции для того, чтобы можно было получить нужные данные в эти параметры (блин, даже описать нормально не получается).
Есть ли вообще решение этой проблемы?