Можно ли отключить отражение от сборки .NET? - PullRequest
5 голосов
/ 15 декабря 2010

Я бы хотел запустить стороннюю сборку .NET на своем API.Я хочу позволить ему вызывать свои собственные методы и объекты по своему усмотрению, но запретить ему доступ ко всему, что явно не предоставлено моим API.В частности, если мой API передает объект стороннему коду как IMyObject, я не хочу, чтобы они использовали отражение или какой-либо метод для повышения этого объекта, скажем до MyObject, который реализует интерфейс.

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

Ответы [ 2 ]

4 голосов
/ 15 декабря 2010

Что вам нужно, так это запустить сборку в песочнице. Это может быть достигнуто с помощью CAS (Code Access Security) в .Net.

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

.Net 4.0 представляет совершенно новую модель безопасности. Но я мало что знаю об этом.

Вот кое-что, с чего можно начать:

Откройте для себя методы безопасного размещения ненадежных надстроек с .NET Framework 2.0

0 голосов
/ 15 декабря 2010

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

Лучше всего запутать сборку.Это сделает сборку немного сложнее переделать.

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