在哪里可以了解 .NET 框架中的权限?
Posted
技术标签:
【中文标题】在哪里可以了解 .NET 框架中的权限?【英文标题】:Where can I learn about permissions in the .NET framework? 【发布时间】:2012-01-01 21:03:42 【问题描述】:我想查看 .NET 框架定义的每个权限的概述,以及通过允许不受信任的程序集访问每个权限会打开哪些可能的安全漏洞。
我还想知道 Internet 上的 Silverlight 应用程序允许哪些特定权限,这似乎是在沙盒中运行程序集的良好起点。
另外,如何配置具有我想要的权限的新 AppDomain?
【问题讨论】:
是否可以假设您已经阅读了 MSDN 文档:msdn.microsoft.com/en-us/library/… 是的,你认为我应该先点击这 50 个课程中的哪一个?我已经阅读了msdn.microsoft.com/en-us/library/bb763046.aspx 和其他文章,但是到目前为止还没有找到关于权限的很好的讨论。 不幸的是,我认为(50 类)可能是没有关于该主题的全面文章的原因,特别是考虑到有多个可能的枚举可以应用于各种权限属性。你看过这篇文章吗:msdn.microsoft.com/en-us/magazine/cc163701.aspx 阅读文档是一门失传的艺术。建议:点击第一个,扫描到最后一个。您不会花费超过一个小时的时间来弄清楚哪些是对您的目的最重要的课程。 @competent_tech 那篇文章看起来很有用,谢谢! 【参考方案1】:这可能不是最好的答案,但我会尝试。您可以检查 security permissions 作为起点,从那里 code access permissions 可能会感兴趣。
与任何类型的安全一样,您需要使攻击面尽可能小。这意味着您不应该真正为 all 可能的权限攻击而烦恼,而是默认拒绝所有权限。您将只允许应用程序运行所需的最小必要权限。一旦您拥有一小组权限,您或许可以提出一个更狭窄的问题。
要配置 AppDomain,您可以在创建新域之前定义 PermissionSet 和 Evidence 安全参数。一旦创建了域,就不可能(理论上)提升这些权限。
var setup = new AppDomainSetup
ApplicationBase = Path.GetDirectoryName(platform.Location)
;
PermissionSet permissionSet = new PermissionSet();
permissionSet.AddPermission(
new FileIOPermission(FileIOPermissionAccess.Read |
FileIOPermissionAccess.PathDiscovery,
Path.GetDirectoryName(platform.Location)));
permissionSet.AddPermission(
new SecurityPermission(SecurityPermissionFlag.Execution));
var sandbox = AppDomain.CreateDomain(name, null, setup, permissionSet);
来自here、示例evidence security 和Creating an AppDomain with limited permissions 的代码您可能也会感兴趣。
【讨论】:
以上是关于在哪里可以了解 .NET 框架中的权限?的主要内容,如果未能解决你的问题,请参考以下文章