【问题标题】:Error: "Inheritance security rules violated" while Sandboxing错误:沙盒时“违反继承安全规则”
【发布时间】:2011-03-18 20:50:44
【问题描述】:

我正在创建一个将在沙盒环境中运行代码的应用程序。这个环境应该只允许不受信任的代码处理它明确给出的资源并返回一个定义的数据类型。我正在使用本文中的主体来设置沙箱:

How to: Run Partially Trusted Code in a Sandbox

我还有一些代码需要在沙盒环境中运行。不幸的是,当我尝试将类型设置为在沙箱中运行时,出现以下错误:

类型违反了继承安全规则:“MyTypeRunningInSandbox”。派生类型必须与基类型的安全可访问性相匹配,或者难以访问。

我不知道为什么会出现这个错误,因为基类型和派生类型都是由我创建的,而且两者都不应该比另一个更安全。

我的应用结构(帮助您理解):

TypeLoader class
   \
    Trusted Sandbox Manager (i.e. sets up a the new sandbox)
     \              (the error is happening in this class while creating the 
      |             new app domain) 
      |
      |Untrusted Sandbox Manager (i.e. runs the untrusted code)

如果您将我的解决方案与上面的 Microsoft 文章进行比较,我的代码在与以下行等效的情况下失败:

ObjectHandle handle = Activator.CreateInstanceFrom(
newDomain, typeof(Sandboxer).Assembly.ManifestModule.FullyQualifiedName,
       typeof(Sandboxer).FullName );

关于如何解决此问题的任何想法?

【问题讨论】:

    标签: .net-4.0 cas


    【解决方案1】:

    我终于想通了。我需要更好地理解受信任的程序集和强名称是如何工作的。问题是我的不受信任类型的基本类型位于一个程序集中,该程序集使用与我之前设置的受信任相同的强名称密钥进行签名。当我将基本类型移动到具有不同强名称键的新程序集时,它开始工作得很好。现在看起来很明显,无法想象为什么我以前没有看到它。

    感谢任何给予此考虑的人!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-16
      • 2018-04-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多