Здравствуйте. Вот решил запостить вопрос и сюда, вследствии собирания здесь большого количества пытливых умов. :)
Вопрос, не совсем обычный... Можно ли (и если можно, то каким образом) сделать так, чтобы на сайте, который крутится на PHP, существовал раздел, который бы позволял любому пользователю добавлять PHP-код и сразу _выполнять_ его. Причем от языка PHP нужно разрешить только "алгоритмическую" часть, то есть разрешить в коде использовать только - работу с переменными - работу с массивами - функции, определенные в текущем коде - вывод print или echo - (опционально) математические функции Возможные проблеммы зацикливания чужого кода, проблеммы потенциального создания больших массивов, можно пока не рассматривать. Так вот сам вопрос - можно ли такую вещь как-нибудь сделать? Как ввести нужные ограничения? Конечно, понятно, что такой раздел на сайте - огромнейшая дыра и потенциальная угроза, причем ещо какая. Но вот может быть всеже есть возможность сделать такую вещь без сильного нарушения безопасности? Из возможных путей я пока вижу несколько - - Предварительно фильтровать PHP код на наличие недопустимых функций, и не позволять его запускать. Список недопустимых функций будет весьма большой, и будет зависеть от подключенных модулей... Так что все учесть сложно... - Проанализировать код на наличие описания функций (Это более-менее просто сделать строковыми средствами PHP). Просканировать код и определить все места вызова функций (кстати, как правильно это сделать?). Если вызывается неописанная функция, не разрешать код к запуску... - Комплексный подход средствами UNIX и PHP. Выделить директорию, выход из которой для php скриптов невозможен (это вообще реально сделать?). Назначить права для предотвращения записи внутри директории с такими скриптами. Это ограничит файловые функции скриптов пользователей. Обрезать опции по самые яйца в php.ini (а что там можно реально обрезать в php.ini?). (Дополнительные условия - все должно работать на обычном UNIX хостинге, без экзотических конфигураций.. То есть, иметь два транслятора php или два файла php.ini - для обыной части сайта и для "защищенной" - ни один админ не будет с этим ковыряться.) У кого есть какие соображения по этому поводу? В каком направлении копать? Со всяческими пожеланиями, Сергей. http://xi.net.ru _______________________________________________ smoke-room mailing list [email protected] https://lists.altlinux.org/mailman/listinfo/smoke-room
