Задать вопрос

Как ограничить область выполнения PHP скрипта include?

Здравствуйте. Возникла следующая задача:

Представте себе веб сервер, на котором у каждого «пользователя» есть своя папка, в которую он может загружать свои скрипты. Скрипты — это модули к открытому API проекта, «пользователь» — это программист допущенный взаимодействовать с системой.

Использование скриптов «пользователей» всегда начинается с корневого index.php, который живет в document_root, далее в зависимости от URL собирается цепочка include, в какой то момент подключается кусочек с которым работал «пользователь».

Так как «пользователь» загружает скрипт на чистом PHP — зону видимости таких функций как file(), file_get_contents(), rmdir() необходимо ограничить и свести к работе внутри доверенной ему категории.

Вопрос может показаться глупым и тривеальным, но хочется найти оптимальный способ решения этой задачи.
Буду рад услышать ваши предложения по этому вопросу!
  • Вопрос задан
  • 3947 просмотров
Подписаться 3 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 5
FanatPHP
@FanatPHP
Чебуратор тега РНР
Вообще-то есть такая штука, как open_basedir, которая делает именно это.
Но как-то не кажется мне такая идея 100%-й защитой.
Ответ написан
nazarpc
@nazarpc
Open Source enthusiast
Думаю, тут подойдет использование chroot, таким образом вы точно сможете запереть пользователя в его директории.
Ответ написан
stan_jeremy
@stan_jeremy
php.net/manual/en/ini.sect.safe-mode.php

есть настройка специально для инклудов — safe_mode_include_dir
Ответ написан
wartur
@wartur
Я бы сделал как минимум через mpm_itk + сервисную прослойку.
Ответ написан
EugeneOZ
@EugeneOZ
Нет, автор, Вы никак не сможете это сделать. И подумайте, что сделает с вашим сервером конструкция «while(1);» в коде юзеров.

Ответы на этот вопрос оставляют удручающее впечатление об уровне знания PHP хабра-жителями.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 дек. 2024, в 20:40
10000 руб./за проект
22 дек. 2024, в 20:34
3000 руб./за проект
22 дек. 2024, в 20:12
10000 руб./за проект