Безопасность / Аутентификация для Архитектуры Плагинов - PullRequest
3 голосов
/ 02 сентября 2010

Я думал о множестве способов обеспечения безопасности в системе на основе плагинов.Теперь, когда я говорю «Безопасность», я имею в виду следующее:

a) Как разработчики системы плагинов могут гарантировать, что плагины безопасны и безопасны для использования на платформе Core.б) Как разработчики плагина могут гарантировать, что плагины, используемые на их Платформе, являются «надежными», то есть каким-то способом, которым мы знаем, «ВОЗ» разработал этот плагин (аналогично тому, что Facebook делает со своими ключами API) в) КакМогут ли разработчики контролировать, какие изменения вносит плагин в пользовательский интерфейс (если это вообще разрешено)?Например, плагин, которому разрешено создавать основной интерфейс и перенаправлять пользователя плагина на определенные веб-страницы, переводит пользователя на фишинговый сайт.

У меня есть первоначальные мысли по этому вопросу: а) Я обдумываюбудет ли использование Песочницы достаточным.Защитит ли это плагин от, скажем, от прямых вызовов DB, ​​чтобы сделать какие-то непослушные вещи?Сможет ли кто-нибудь ограничить плагин в доступе к Локальной системе, не мешая при этом функциональности системы?Что вы думаете об этом?

На б), я считаю, что аутентификация в стиле Facebook - это путь.Но не будет ли это излишним для маленького приложения («маленького» в том смысле, что оно меньше, чем Facebook или Jira)?Есть ли другие возможные варианты?

На c) Я буду честен и скажу, что понятия не имею, как это можно реализовать.Есть какие-нибудь мнения?

Итак, вопрос в том ... как реализовать безопасность на архитектуре плагинов?

Ответы [ 2 ]

1 голос
/ 02 сентября 2010

a и c - это, если я правильно вас понимаю, один и тот же вопрос.

Вы хотите ограничить то, что возможно в вашей системе плагинов,простой ответ - пойти и ограничить окружающую среду.Создайте среду, в которой безопасность, GUI и все, что вы считаете священным, должны быть защищены конструкцией, назовите это песочницей, назовите ее очень строгим API, заставьте разработчиков плагинов использовать что-то, что не является настоящим программированиемlanguage.

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

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

b Знание того, кто разработал что-то, требует, чтобы вы запросили их и подтвердили личную информацию.

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

Не подойдет для небольшой системы, даже если вы подписываетесь бесплатно.

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

Если разработчики не могут быть обеспокоены регистрацией учетной записи, либоВы всегда можете проверить IP с небольшим количеством трафика SSL, чтобы избежать подмены, и использовать его в качестве внутреннего имени пользователя.Люди с динамическими IP-адресами или с прокси-серверами и множеством плагинов для отправки могут в конечном итоге зарегистрироваться.

Конечно, для этого нужны люди, которые могут проверять плагины.

0 голосов
/ 02 сентября 2010

a) Как разработчики системы плагинов могут гарантировать, что плагины безопасны и безопасны для использования на платформе Core.

Как разработчики знают что-нибудь? Они не Они должны доверять рамкам. Для открытого исходного кода это означает, что скачайте его и проверьте сами. Для проприетарного, кто знает, как разработчики растут, чтобы доверять фреймворку?

b) Как разработчики плагина могут гарантировать, что плагины, используемые на их Платформе, являются «надежными», то есть каким-то способом, которым мы знаем, «ВОЗ» разработал этот плагин (аналогично тому, что Facebook делает со своими ключами API)

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

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

в) Как разработчики могут контролировать изменения, вносимые плагином в пользовательский интерфейс (если это вообще разрешено)? Например, плагин, которому разрешено обслуживать пользовательский интерфейс и перенаправлять пользователя плагина на определенные веб-страницы, переносит пользователя на фишинговый сайт.

Да. Бывает все время.

Что такое "фишинг"? Иногда я не хочу выдавать свою электронную почту даже "настоящей" компании. Они "фишинг", когда они спрашивают? На самом деле, нет. Как насчет источника новостей на странице регистрации? Я должен зарегистрироваться, чтобы получать новости. Это фишинг? А как насчет сайта, который обещает финансовую информацию? Если я регистрируюсь, это фишинг из финансового источника или это законная регистрация пользователя? Что делать, если финансовая информация о Нигерии? Что, если речь пойдет о моем родственнике в Нигерии?

Здесь нет технических средств для определения "хорошо" или "плохо". Это все ценностное суждение со стороны пользователя.

Платформа "plug-in" ничего не может решить. Решать могут только пользователи.

...