是否可以禁用.NET程序集的反射?

问题描述:

我想在我的API上运行第三方.NET程序集。我想让它根据自己的意愿调用它自己的方法和对象,但否认它访问我的API没有明确给出的任何东西。特别是,如果我的API将对象传递给第三方代码为IMyObject,我不希望它们使用反射或任何方法将该对象提升到实现该接口的MyObject是否可以禁用.NET程序集的反射?

有没有办法拒绝在这个第三方程序集中使用反射的能力?我完全控制了一切,所以我不需要阻止人们反编译我的程序集,只是在运行时滥用它。

您正在寻找的是在沙箱中运行程序集。这可以通过.Net在uisng CAS (Code Access Security)中实现。

这是它是如何工作的。您创建AppDomain,分配有限的权限。例如,您允许显示UI,但不允许使用文件系统或反射。然后你将一个装配加载到它并让它运行。

.Net 4.0引入了一个全新的安全模型。但我对此并不了解。

这里是什么让你开始:

Discover Techniques for Safely Hosting Untrusted Add-Ins with the .NET Framework 2.0

如果调用者正在'完全信任'上运行,则无法完成任何操作。他将永远拥有组装的完整权限。

最好是混淆程序集。这会使组装有点难以重新设计。

+0

对不起,你误会我了。我是打电话的人,我打电话给其他人的集会。 – Clueless 2010-12-17 04:07:31