我想在我的 API 上运行第三方 .NET 程序集。我想让它按照自己的意愿调用自己的方法和对象,但拒绝它访问我的 API 未明确提供的任何内容。特别是,如果我的 API 将对象作为 IMyObject
传递给第三方代码我不希望他们使用反射或任何方法将该对象提升到,例如 MyObject
实现接口(interface)。
有没有办法否认在这个第三方程序集中使用反射的能力?我可以完全控制一切,所以我不需要阻止人们反编译我的程序集,只需在运行时滥用它。
最佳答案
您正在寻找的是在沙箱中运行程序集。这可以通过 CAS (Code Access Security)
来实现在.Net 中。
下面是它的工作原理。您创建一个 AppDomain
,为其分配有限的权限。例如,您允许显示 UI,但不允许使用文件系统或反射。然后将程序集加载到其中并让它运行。
.Net 4.0 引入了全新的安全模型。但我对此知之甚少。
这里有一些让你开始的东西:
Discover Techniques for Safely Hosting Untrusted Add-Ins with the .NET Framework 2.0
关于.net - 是否可以禁用 .NET 程序集的反射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4447939/