【问题标题】:restricting a codedom compiled assembly限制 codedom 编译的程序集
【发布时间】:2009-12-24 18:28:21
【问题描述】:

我为我的应用程序编写了一个插件管理器,它利用 codedom 将 c# 代码编译为类库并实例化其类型。 它工作得很好,现在我希望限制已编译程序集的权限。不幸的是我不知道该怎么做。 据我了解,我应该以某种方式使用 CompilerParameters.Evidence,但我不清楚如何使用。 为了清楚起见,我不想简单地将组件分类为某个区域,我想将其限制为在插件管理器构造函数中作为参数传递的权限集。我还想提一下,我不会将程序集加载到新的 appdomin 中,它与应用程序的其余部分在同一个域上执行。

谢谢。

【问题讨论】:

  • 整整一年后我也有同样的问题。找到答案了吗?
  • 如何使用 .NET Framework 4.0 做到这一点? CompilerParameters.Evidence 现在已弃用.. 有什么想法吗?

标签: security codedom


【解决方案1】:

处理安全性的 CodeDOM 示例对 google 来说很棘手。经过几个小时的阅读,我找到了两种方法。

最好的似乎是托管插件框架,因为它专为您的用例场景而设计。 Restrict plug-in assembly code access

CAS(代码访问安全) 也是一种选择,但它似乎不太受欢迎并且即将淘汰。这是从这个 [SO 帖子][3] 中提取的一个示例

var myEvidence = new Evidence(new object[] {SecurityZone.Internet});
var newDomain = AppDomain.CreateDomain("InternetDomain");
myDomain.Load("MyUntrustedAssembly.dll", myEvidence);
myDomain.CreateInstanceAndUnwrap("MyUntrustedAssembly","MyUntrustedObjectType");

CAS 参考文献 .NET/Security: Limiting runtime-loaded assemblies from accessing certain APIs http://www.gamedev.net/community/forums/topic.asp?topic_id=418038 http://www.go4answers.com/Example/codedom-security-64586.aspx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多