gpt4 book ai didi

c# - 寻找在 Sandbox AppDomain 中加载程序集的最低权限。为什么需要这些权限?

转载 作者:行者123 更新时间:2023-11-30 21:13:08 24 4
gpt4 key购买 nike

我正在尝试为沙盒 AppDomain 设置最低权限以加载程序集。好像必须要有appBase的PathDiscovery权限和加载的程序集的Read权限,但是依赖的程序集不需要权限。我的问题是:为什么我们需要 PathDiscovery?对每个需要的程序集的读取访问权限不够吗?为什么只有加载的程序集需要读取权限而不需要依赖程序集?

这里有一个代码片段来提供一些上下文:

AppDomainSetup setup = new AppDomainSetup
{
ApplicationName = "Name",
ApplicationBase = binFolder,
};

PermissionSet permissionSet = new PermissionSet(PermissionState.None);
permissionSet.AddPermission(new SecurityPermission(SecurityPermissionFlag.Execution));

// Mandatory. Why PathDiscovery is needed?
permissionSet.AddPermission(new FileIOPermission(FileIOPermissionAccess.PathDiscovery, binFolder));

// Mandatory. Why Read is not also needed for all dependent assemblies?
permissionSet.AddPermission(new FileIOPermission(FileIOPermissionAccess.Read, assemblyPath));

var domain = AppDomain.CreateDomain("Domain Name", null, setup, permissionSet);

domain.CreateInstanceFromAndUnwrap(assemblyPath, typeName);

最佳答案

Why do we need PathDiscovery?

因为从指定路径成功加载程序集会表明该路径存在。同样,尝试从路径加载程序集时抛出的某些异常也会表明该路径有效,即使目标文件不是 .NET 程序集也是如此。

Why only the loaded assembly needs Read permission and not the dependent ones?

因为加载的程序集不控制加载其依赖项的位置,所以仅仅能够加载依赖程序集并不会透露有关特定路径有效性的信息。也就是说,它确实揭示了一些信息,因为 .NET 程序集搜索位置是众所周知的,所以我想可以说这里的检查应该更强一些。如果您对此有强烈的感觉,可以在 https://connect.microsoft.com/visualstudio/feedback 上发布错误报告。 .

关于c# - 寻找在 Sandbox AppDomain 中加载程序集的最低权限。为什么需要这些权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7013557/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com