Вопрос

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

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

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

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

Это было полезно?

Решение

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

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

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

Другие советы

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

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

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

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

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

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

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

Подпишите собрания.

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

http://msdn.microsoft.com/en-us/library/h4fa028b (ПРОТИВ 80).aspx

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top