【问题标题】:Why is CAS demo code running in localhost (127.0.0.1) not recognizing security zones?为什么在 localhost (127.0.0.1) 中运行的 CAS 演示代码无法识别安全区域?
【发布时间】:2009-08-18 15:25:35
【问题描述】:

我正在运行 MCTS 70-536 培训工具包第 11 章关于代码访问安全性的实验室。我正在运行 XP Pro。第一个实验室创建了一个程序集,它检查不同的权限并在它们存在时报告一条消息。但是,当我以\\\127.0.0.1\c$\ListPermissions.exe 运行它时,它应该能够识别出处于 Intranet 区域并使用 Intranet 权限集。但是,似乎授予了所有权限。这种行为对任何人来说都很熟悉吗?如果没有,有没有办法检查程序集从共享运行时认为它在哪个区域?如果这个问题的某个特定部分过于模糊,请告诉我,我会尝试重新表述。

【问题讨论】:

  • 你能把代码弹出到问题中吗?如果不止几行,您可以在 pastebin.com 上粘贴吗?

标签: .net code-access-security


【解决方案1】:

我遇到了同样的问题。但是我尝试了其他方法。我没有从共享文件夹或 C 驱动器的根目录等不同位置执行程序,而是创建了一个应用程序域并使用各种区域设置从我的应用程序域执行代码。这是我的代码:

 object[] hostEvidence = { new Zone(SecurityZone.Internet) };
 Evidence appDomainEvidence = new Evidence(hostEvidence, null);
 AppDomain d = AppDomain.CreateDomain("MyDomain", appDomainEvidence);
 d.ExecuteAssembly("ListPermissions.exe");

当我的区域设置为 MyComputer 时,ListPermissions 会执行而不给出任何异常,并且每个权限都返回 true。但是,当我将我的区域设置为 Internet 或 Intranet 时,ExecuteAssembly 行开始给出异常,这实际上让我很高兴。至少在某些时候它是有效的。

根据我的理解,当您从不同位置运行应用程序时,CLR 会看到正在运行的代码具有不同的证据,并将程序集分配给不同的代码组,例如 mycomputer 或 internet。然而,至少我的配置不是这样,另一个论坛得出结论,使用 .NET 框架 3.5,来自共享文件夹的正在运行的程序集没有作为从 Internet 区域运行的程序集的确切证据。 http://social.msdn.microsoft.com/Forums/en/clr/thread/5f5f0925-64fc-4fc8-9be3-d077d27d2554 我实际上不知道使程序像书中那样执行的确切解决方案。只是想与创建的自定义应用程序域共享代码按预期工作。

希望对你有帮助

谢谢

【讨论】:

    【解决方案2】:

    .net 平台似乎发生了变化。启动托管 exe 时添加了一条新证据。当 exe 直接从 win32 CreateProcess API 启动时,托管 exe 将获得完全信任。

    当然,.net 配置工具不会启动 exe,只是检查它。这意味着证据不同并影响分配给它的代码组。这反过来会影响权限。

    这非常令人困惑。更令人困惑的是你应该在考试中给出的答案。我想答案会和书中一样。我不认为这种变化已经渗透到考试内容团队。

    更多信息可以在这里找到:

    msdn social

    brad abrams blog

    【讨论】:

    • 我需要尝试一下。听起来它指向了正确的方向。谢谢。
    【解决方案3】:

    您好,我不知道您是否发现在运行此示例时发生了什么,但使用 .NET Framework 2.0 配置工具下的评估程序集我可以看到该程序集应该在 Internet_Zone 和 Internet_Same_Site_Access 代码组下运行。这些代码组授予由 5 个授权组成的子集: - 用户界面 - 隔离存储 - 保护 - IO 对话 - 打印

    在配置工具下似乎没问题...但是组装行为却大不相同...不知道:(

    马可

    【讨论】:

      猜你喜欢
      • 2011-11-15
      • 1970-01-01
      • 2014-01-13
      • 1970-01-01
      • 2020-12-18
      • 1970-01-01
      • 1970-01-01
      • 2021-12-12
      • 1970-01-01
      相关资源
      最近更新 更多