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

标签 .net reflection

我想在我的 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/

相关文章:

c# - Task.WhenAll 订单的结果有保证吗?

java - 在 java (Android) 中获取字符串形式的字段值

swift - 创建一个 [字符串 : Class] dictionary in Swift 4

.net - ClickOnce 证书已过期 - 未签署 list

c# - 你如何写入 NUnit gui runner 的 Log 选项卡和 Console.Error 选项卡

java - 通过反射调用可变参数方法

c# - 使用程序集作为许可证文件的优点/缺点?

scala - 如何让 Scala ToolBox 查看 REPL 定义?

.net - 在 ExceptionFilter 中使用 ILogger

c# - 如何在C#中配置中间输出目录