Альтернатива безопасному режиму PHP - PullRequest
3 голосов
/ 25 октября 2011

Безопасный режим устарел как 5.3.0.Я никогда в действительности не требовал этого, и довольно много раз сталкивался с этим в прошлом из-за ошибок в разрешениях и т. Д.

Однако теперь у меня есть требование, в котором я считаю, что безопасный режим был бы полезен.

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

Меня беспокоит то, что я не могу обеспечитьзагруженный ими код не сканирует основу / фреймворк, которые я потратил буквально на годы разработки и тестирования.Хранение кода, представляющего собственность, представляет для меня большой интерес.

  1. Я пишу инструмент для анализа модулей, чтобы гарантировать, что в сторонних модулях не будут вызываться нелегальные методы - не просто !!!

  2. I Отключить вредоносные функции на уровне php.ini, но это включает в себя fopen () и тому подобное - это означает, что среда не сможет вызывать собственные операции include () и тому подобное.

  3. Наконец и печально устарел безопасный режим, ограничивающий возможности пользовательских модулей читать файлы, которые не имеют одинаковый идентификатор, группу и т. Д.

Каков рекомендуемый подход к такой вещи?Если не считать ручного просмотра или автоматического анализа каждого модуля перед его выполнением в контексте моей платформы?

Ответы [ 3 ]

0 голосов
/ 05 декабря 2013

Вместо safemode вы можете использовать php-fpm с chroot, разрешения для каждого пользователя в mod_ruid и php-fpm, а также ограничение opendir в php.Таким образом, вы можете сделать его гораздо более строгим, чем когда-либо в безопасном режиме.

Лично я бы порекомендовал php-fpm с chroot и отключением системных функций, таких как exec и system.Все равно это зло.

0 голосов
/ 26 апреля 2017

Я использую open_basedir в / etc / php / 7.0 / fpm / php.ini , который обходит безопасный режим

0 голосов
/ 26 октября 2011

Хорошо, что safe_mode удаляется.Это ложное чувство секретности, и было много способов обойти это.

Лучшим подходом является использование suphp для запуска приложения в качестве заключенного в тюрьму пользователя.Это использует безопасность операционной системы для защиты вашего приложения.Вместо того, чтобы запрещать exec() и system(), вы запускаете свой php-код как учетную запись, которая не имеет доступа к оболочке.Вместо запрета fopen() вы удаляете права на запись из всего, что принадлежит этому пользователю chmod 500 -R /.Или сделайте еще один шаг и запустите ваше приложение в chroot.

...