【问题标题】:Is it possible to disable reflection from a .NET assembly?是否可以禁用 .NET 程序集的反射?
【发布时间】:2010-12-15 08:16:06
【问题描述】:

我想在我的 API 上运行第三方 .NET 程序集。我想让它按照自己的意愿调用自己的方法和对象,但拒绝它访问我的 API 未明确提供的任何内容。特别是,如果我的 API 将对象作为IMyObject 传递给第三方代码,我不希望他们使用反射或任何方法将该对象提升到,例如实现接口的MyObject

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

【问题讨论】:

    标签: .net reflection


    【解决方案1】:

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

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

    .Net 4.0 引入了全新的安全模型。但我对它了解不多。

    以下是帮助您入门的内容:

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

    【讨论】:

      【解决方案2】:

      如果调用方在“完全信任”上运行,则无法执行任何操作。他将始终拥有大会的完全访问权限。

      最好的方法是混淆程序集。这将使组装变得更难重新设计。

      【讨论】:

      • 对不起,你误会了。我是调用者,我正在调用其他人的程序集。
      猜你喜欢
      • 1970-01-01
      • 2011-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-16
      • 1970-01-01
      • 2020-03-22
      • 2010-09-26
      相关资源
      最近更新 更多