глобальная область видимости всегда будет доступна.
но объектно-ориентированная концепция предоставляет многое. то, что вы не можете сделать, это скрыть глобальные вещи. что вы можете сделать, так это не сделать его видимым.
, но выполнение непросмотренного стороннего кода - сложная вещь. Я бы порекомендовал какую-то изоляцию процесса здесь, если это возможно. это означает, что вы открываете процесс, используя popen или что-то еще, в сочетании с suphp вы можете сделать пользователя с ограниченными правами в Linux. это очень хорошо возможно и безопасно с правильными мерами безопасности.
Хороший подход для запуска кода в одной и той же программе - использовать шаблонный шаблон. это немного непрактично для классов, потому что загружаются целые файлы, которые могут внедрить опасный код. но вы можете создавать пользовательские функции в PHP из кода. код не выполняется, если функция не вызывается. Вы также можете расширить класс до имени переменной, которое затем будет предоставлено пользователем. однако это почти невозможно сделать безопасным.
когда дело доходит до HTML-кода, это намного проще. Есть хорошие HTML Tidy это хорошее начало. Есть хорошие решения, позволяющие использовать только специальные теги.
javascript может быть «защищен» так, как это делали старые приложения Facebook fbml. что включает переписывание на стороне сервера, имена динамических переменных и т. д. это довольно сложно.
по моему мнению, лучший способ разрешить внешние настройки - это разрешить внешние таблицы стилей. просто загрузите их из внешнего источника, и на самом деле это не проблема безопасности.
edit: конечно, вы можете анализировать любой код и ограничивать его определенными утверждениями или отклонять определенные утверждения, но это очень сложно и для php очень тяжелое ограничение. Вероятно, лучше переключиться на более высокоуровневые алгоритмические языки или перейти на сторону клиента с javascript.