Можно ли отключить отражение от сборки .NET?
Я хотел бы запустить стороннюю сборку .NET на моем API. Я хочу, чтобы он вызывал свои собственные методы и объекты по своему усмотрению, но отказывался от доступа ко всему, что мой API явно не дает. В частности, если мой API передает объект в код третьей стороны как IMyObject
, я не хочу, чтобы они использовали отражение или какой-либо метод для повышения этого объекта, скажем MyObject
, который реализует интерфейс.
Есть ли способ отрицать способность использовать отражение в этой третьей стороне сборки? Я полностью контролирую все, поэтому мне не нужно останавливать людей от декомпиляции моей сборки, просто злоупотребляя им во время выполнения.
Ответы
Ответ 1
То, что вы ищете, - это сборка в песочнице. Это может быть достигнуто uisng CAS (Code Access Security)
в .Net.
Вот как это работает. Вы создаете AppDomain
, назначая ему ограниченные права. Например, вы разрешаете отображение пользовательского интерфейса, но не разрешаете использовать файловую систему или отражение. Затем вы загружаете сборку в нее и запускаете ее.
.Net 4.0 представляет совершенно новую модель безопасности. Но я не знаю много об этом.
Вот что вам нужно начать:
Откройте для себя методы безопасного размещения ненадежных надстроек с .NET Framework 2.0
Ответ 2
Если вызывающий абонент работает в режиме "Полное доверие", ничего не может быть сделано. Он всегда будет иметь полный доступ к сборке.
Лучше всего сфотографировать сборку. Это сделает сборку немного сложнее для реинжиниринга.