Динамическая загрузка плагинов .Net с правами доступа

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

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

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

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

18.08.2008 09:10:56
4 ОТВЕТА
РЕШЕНИЕ

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

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

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

0
18.08.2008 09:14:30

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

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

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

0
18.08.2008 09:20:43

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

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

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

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

0
18.08.2008 10:56:35

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

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

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

0
25.04.2009 12:12:01