我希望看到.NET框架定义的每个权限的概述,以及通过允许不受信任的程序集访问每个权限来打开可能的安全漏洞。
我还想知道在互联网上的Silverlight应用程序中允许哪些特定权限,这似乎是在沙箱中运行程序集的一个很好的起点。
另外,如何使用我想要的权限配置新的AppDomain?
答案 0 :(得分:2)
这可能不是最好的答案,但我试试。您可以将security permissions作为起点,然后code access permissions可能会感兴趣。
与任何类型的安全性一样,您需要使攻击面尽可能小。这意味着您不应该为所有可能的权限攻击而烦恼,而是默认拒绝所有权限。您将只允许运行应用程序所需的最低必要权限。一旦你拥有一小组权限,你可以提出一个更狭隘的问题。
要配置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也可能对您感兴趣。