информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Сетевые кракеры и правда о деле ЛевинаГде водятся OGRы
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Линуксовый ботнет, распространяющийся... 
 Конец поддержки Internet Explorer 
 Рекордное число уязвимостей в 2021 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / web building
Имя Пароль
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
опции memory_limit и max_execution_time спасут. 04.03.06 20:26  Число просмотров: 9276
Автор: paganoid Статус: Member
<"чистая" ссылка>
> Здравствуйте.
>
> Вот у меня тут есть такой вопрос, не совсем обычный...
>
> Можно ли (и если можно, то каким образом) сделать так,
> чтобы на сайте с языком PHP
> существовал раздел, который бы позволял любому пользователю
> добавлять PHP-код
> и сразувыполнятьего. Причем от языка PHP нужно
> разрешить только "алгоритмическую"
> часть, то есть разрешить в коде использовать только
>
> - работу с переменными
> - работу с массивами
> - функции, определенные в текущем коде
> - вывод print или echo
> - (опционально) математические функции
>
> Возможные проблеммы зацикливания чужого кода, проблеммы
> потенциально возможных
> больших массивов можно пока не рассматривать.

опции memory_limit и max_execution_time спасут.

>
> Так вот сам вопрос - можно ли такую вещь как-нибудь
> сделать?
> Конечно, понятно, что такой раздел на сайте - огромнейшая
> дыра и потенциальная угроза,
> причем ещо какая. Но вот может быть всеже есть возможность
> сделать такую вещь
> без сильного нарушения безопасности?
>
> Из возможных путей я пока вижу несколько -
>
> - Предварительно фильтровать PHP код на наличие
> недопустимых функций
> и не позволять его запускать. Список недопустимых функций
> будет весьма большой,
> и будет зависеть от подключенных модулей... Так что все
> учесть сложно...

Есть какая-то "виртуальная машина" для PHP, посмотри на их сайте. Внутри этой машины
можно попробовать установить ограниченный список модулей, требуемый safe mode.

>
> - Проанализировать код на наличие описания функций (Это
> более-менее просто).
> Просканировать код и определить все места вызова функций
> (кстати, как правильно
> это сделать?). Если вызывается неописанная функция, не
> разрешать код к запуску...

В этом варианте навскидку видится только декомпилятор. В качестве другого более менее приемлемого решения - сделать на код highlight с помощью встроенной PHP функции, т.о. найти фрагменты именно кода, а там уже preg-ом. Кстати все равно preg будет хватать лишнее (названия ф-й внутри переменных и комментариев).

>
> - Комплексный подход средствами UNIX и PHP. Выделить
> директорию, выход из которой
> для php скриптов невозможен (это вообще реально сделать?).
> Назначить права для
> предотвращения записи внутри директории с такими скриптами.
> Это ограничит файловые
> функции скриптов пользователей. Обрезать опции по самые
> яйца в php.ini (а что там можно
> реально обрезать?).

См. php safe mode - в нем можно задать опцию open_base_dir - откуда php может читать файлы. Там же можно обрезать список разрешенных функций. Сам список достаточно просто получить через get_defined_function или что-то вроде там такое есть.

>
> (Дополнительные условия - все должно работать на обычном
> UNIX хостинге без
> экзотических конфигураций.. То есть, иметь два транслятора
> php или два файла
> php.ini -для обыной части сайта и для "защищенной" - ни
> один админ не будет с
> этим ковыряться.)

Версия - обычный PHP - в виде модуля, а "песочница" - через интерпретатор, урезанный с помощью php.ini. И выполнять чужие скрипты только через этот через интерпретатор. Кстати, приблизительно так иногда делают для crontab скриптов.

>
> У кого есть какие соображения по этому поводу? В каком
> направлении копать?
<web building> Поиск 






Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2022 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach