Динамическая загрузка плагинов .Net с правами доступа - PullRequest
1 голос
/ 18 августа 2008

Какие рекомендации вы можете дать для системы, которая должна выполнять следующие действия:

Загрузка плагинов (и в конечном итоге их выполнение), но есть 2 способа загрузки этих плагинов:

  • Загружать только авторизованные плагины (разработано владельцем программное обеспечение)
  • Загрузить все плагины

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

Ответы [ 4 ]

0 голосов
/ 25 апреля 2009

Подпишите сборки.

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

http://msdn.microsoft.com/en-us/library/h4fa028b(VS.80).aspx

0 голосов
/ 18 августа 2008

Сколько вы потеряете, если конечный пользователь загрузит несанкционированный плагин?

По общему признанию, это случается не часто, но когда / если это случается, мы много теряем, и я, хотя я понимаю, что мы не будем производить ничего на 100% безопасных, я хочу сделать это достаточным препятствием, чтобы люди не делали этого .

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

0 голосов
/ 18 августа 2008

Вы можете расширить свой вопрос: «Как я могу защитить свои сборки .net от обратного инжиниринга?»

ответ - нельзя. для тех, кто еще этого не видел, просто найдите «отражатель» и запустите его на каком-нибудь наивном exe.

(кстати, это всегда ответ для кода, который у вас не в руках, если у вас нет аппаратного обеспечения для расшифровки / отправки, отправленного с ним),

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

0 голосов
/ 18 августа 2008

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

Вы можете посмотреть на все виды трюков с безопасностью, но, в конце концов, код на их компьютере, так что он не под вашим контролем.

Сколько вы потеряете, если конечный пользователь загрузит неавторизованный плагин?

...