Безопасная загрузка сторонних PHP файлов в проект

Здравствуйте!

Существует сайт, написанный на PHP, который должен осуществлять связь со сторонними проектами через их API. У нашего проекта для общения с чужими, существует система шлюзов:

class BaseGateway {
public function ProjectInit($data);
public function CheckLogin($data);
...
}


Соответственно каждый реальный шлюз наследует класс BaseGateway и реализует функционал связи с каждым конкретным партнерским сервисом.

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

Вопрос:
Нужны идеи, каким образом можно предложить партнерам создавать свои шлюзы и заливать их php файлы не сделав себе огромную дыру в безопасности?

Что явно не нужно писателем шлюзов: работа с файловой системой за пределами выделенного им каталога, функции system, exec, функции смены прав доступа и многое другое.

По сути все что нужно это стандартные функции, curl и т.п.

Доверие к программистам-партнерам:
С каждым партнером у нас заключается договор, но это сторонние люди, потому определенное доверие конечно же есть, но оставлять свою систему перед ними абсолютно голой - нельзя.
  • Вопрос задан
  • 2715 просмотров
Пригласить эксперта
Ответы на вопрос 3
PavelK
@PavelK
Тут сложно что-либо сказать, не видя всей картины.
По моему в данном случае лучше смотреть в сторону SOAP (WSDL), Restfull и т.д.
Или можно, например, на уровне сервера запретить все опасные операции и каждый скрипт запускать только от своего имени пользователя с соответственным выставленными правами.
Или вообще только отдельное окружение.
Или делать пре-модерацию всех подключаемых классов.
Или запретить все операции а над ними написать обёртки, в которых проверять правильность данных.
Ответ написан
Комментировать
KOLANICH
@KOLANICH
Знаю JS, PHP, C++, C#
гм....
использовать AF_UNIX сокеты для коммуникации и отдельные экземпляры PHP, засунутые в контейнеры?

ещё наткнулся на php.net/manual/ru/runkit.sandbox.php - это встроенная в php песочница
Ответ написан
Комментировать
@VArtem Автор вопроса
Т.е. вынести шлюзы отдельно, а связь с ними из самого проекта осуществлять через сокеты?

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

Можно даже пойти дальше и абстрагироваться от пхп. Например переписать все шлюзы на яву и сделать какой-то ява демон, который по команде сайта будет вызывать тот или иной шлюз
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы