PHP MVC Sandboxing - PullRequest
       56

PHP MVC Sandboxing

2 голосов
/ 28 февраля 2011

Я строю систему, где разные пользователи могут загружать свои собственные модули php.Система основана на пользовательской инфраструктуре MVC, написанной на PHP и развернутой в Linux.Когда пользователь входит в систему, его модули загружаются ядром системы.Ядро системы совместно используется всеми модулями.

Моя проблема заключается в том, чтобы запретить модулям USER мешать работе с ядром.Например.не связывание файлов и тому подобное.Могу ли я помешать им сделать это с правами доступа к файлам?

Ответы [ 3 ]

4 голосов
/ 28 февраля 2011

Пользователи загружают сценарии и исполняют их, что крайне опасно. Даже если вы обезопасите свою систему, используя disable_function, Suhosin и друзей, вы можете открыть большие дыры в безопасности.

Вместо того, чтобы разрешать пользователям загружать скрипты PHP, я бы предложил вам разрешить им загружать шаблоны, которые состоят из специального языка шаблонов. Такие языки обычно вообще не имеют доступа к таким функциям, как удаление файлов. Затем вы можете открыть язык шаблонов с помощью белого списка, что является гораздо более безопасным подходом.

Движок шаблонов Zeta Componets очень расширяем, а шаблоны интуитивно понятны для написания PHP-разработчикам. Может быть, это вариант для вас?

0 голосов
/ 28 февраля 2011

Надеемся, что каждый пользователь вашей системы будет иметь свою учетную запись на вашем сервере. Если они этого не сделают, будет очень сложно удержать их от удаления данных друг друга.

Полагаю, вы работаете над некоторыми разновидностями Unix-сервера.

  • Создайте одного пользователя, который владеет ядром системы MVC. Это пользователь с правами администратора. Я позвоню этому пользователю mvc-admin.
  • Создать группу, которая разрешит доступ к ядру системы. Я назову эту группу g-mvc-access в этом ответе.
  • до chown -R mvc-admin:g-mvc-access /path/to/mvc-system-root. Теперь все файлы принадлежат пользователю с правами администратора и находятся в группе доступа
  • до chmod -R g+r-w /path/to/mvc-system-root. Теперь группа может читать, но не записывать все файлы в корневом каталоге системы MVC.
  • Добавьте все свои учетные записи пользователей в группу g-mvc-access.
0 голосов
/ 28 февраля 2011

Вы можете загрузить сценарии на второй сервер, который запускает «защищенный» php.

Затем просто отключите опасные функции с помощью директивы disable_functions :

http://www.webhostgear.com/319.html

...