Архитектура подключаемого модуля Objective-C (Mac, а не iPhone) - PullRequest
7 голосов
/ 13 мая 2010

Возможно, я пишу систему плагинов для приложения Какао (Mac, а не iPhone).

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

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

Есть ли способ безопасной загрузки пакетов (например, песочница)? Если нет, то видите ли вы проблемы с использованием распределенных уведомлений? Есть ли другие плагины архитектуры, которые были бы лучше?

1 Ответ

2 голосов
/ 13 мая 2010

Да, OS X имеет поддержку песочницы на уровне процесса. Единственный сторонний клиент с открытым исходным кодом, о котором я знаю, это Chrome . Вы также можете изучить оболочку, такую ​​как Native Client .

Тем не менее, нет смысла пытаться вставлять плагины для песочницы по соображениям безопасности, если вы не загружаете ненадежные плагины или контент по сети (то есть веб-браузер). Если кто-то хочет взломать ваше приложение локально, он может просто использовать отладчик, DTrace и т. Д.

Какой механизм IPC вы используете между процессами приложения и плагина, зависит от типа вашего общения. Intermachine Distributed Objects (я полагаю, это то, что вы хотели написать), конечно, неплохой выбор для большинства целей, но вы не захотите посылать видео поверх него. Вы можете проверить CoreIPC , который используется в разработке WebKit2 ; он работает через порты Маха.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...