безопасность — PHP: предотвращение изменений ядра с помощью стороннего кода

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

Одна проблема, о которой я беспокоюсь, это плагины, изменяющие файлы Core.

Поток приложения выглядит примерно так:

index.php
> Core()
> (do stuff)
> load/execute plugins <- may have code to replace a Core file
> (do stuff)
> exit

Я пытаюсь ограничить доступ плагинов либо файлы или же PHP функции.
Было бы здорово, если бы плагинам разрешалось использовать только базовые классы / методы.

Поскольку он размещается самостоятельно (и может быть использован кем-то, кто не является разработчиком), я не могу контролировать система, apache.conf или же php.ini. Я могу создавать только файлы .htaccess.

Решения о которых я думал:

~ Использование token_get_all () для файлов * .php (во время установки плагина) и проверьте, есть ли какое-либо использование таких функций, как команда chgrp, CHMOD, Чаун, копия, и т.д. Но это не идеально, и я уверен, что я бы пропустил некоторые функции.

Другие решения (из комментариев):

x Изменение разрешений для папок — можно сделать через php, но так же могут быть плагины и ядро ​​не может обновляться

x Редактирование php.ini для предотвращения использования функций — Не могу. Нет доступа к php.ini.

х Использование snuffleupagus пакет — не могу. Это расширение PHP.

2

Решение

Одна проблема, о которой я беспокоюсь, это плагины, изменяющие файлы Core.

Отправьте ваши основные файлы в виде подписанный архив PHP.

Я пытаюсь ограничить доступ плагинов к файлам или функциям PHP. Было бы здорово, если бы плагинам разрешалось использовать только базовые классы / методы.

Это очень сложная проблема, и ее решение выходит далеко за рамки ответа StackOverflow. Как минимум, вам нужно убедиться, что серверная загрузка попадает в вашу среду (что хорошо работает, если вы используете подписанный файл .phar, а не изменяемый файл .php).

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

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector