【问题标题】:Different Security Permissions for Multiple Assemblies on Same AppDomain同一 AppDomain 上多个程序集的不同安全权限
【发布时间】:2011-08-06 22:04:29
【问题描述】:

是否可以将多个程序集加载到一个新的 AppDomain 并为每个程序集应用不同的PermissionSet

比如说,允许其中一个程序集写入磁盘,方法是授予它不受限制的 FileIOPermission 并拒绝其他程序集的此类权限。

如果可能的话。怎么样?

更新

附:我正在创建 DLL 未执行 exe 的类型实例,因此我使用 LoadCreateInstanceAndUnwrap 而不是 ExecuteAssembly

更新

我尝试(但失败)使用以下代码为 load 方法提供证据:

Dim domain As AppDomain = AppDomain.CreateDomain("AssembliesDomain")
Dim protectedSet As New PermissionSet(PermissionState.None)

protectedSet.AddPermission(New SecurityPermission(SecurityPermissionFlag.Execution))
protectedSet.AddPermission(New IsolatedStorageFilePermission(PermissionState.Unrestricted))
protectedSet.PermitOnly()

domain.Load(protectedAssembly, New Evidence(Nothing, {protectedSet}))
domain.Load(unprotectedAssembly, New Evidence(Nothing, {protectedSet}))

Console.WriteLine(domain.CreateInstanceAndUnwrap(protectedAssembly, protectedAssembly & ".Actions").Sum(1, 2))
Console.WriteLine(domain.CreateInstanceAndUnwrap(unprotectedAssembly, unprotectedAssembly & ".Actions").Sum(1, 2))
Console.ReadLine()

【问题讨论】:

  • 您拥有的代码似乎是正确的。您是否使用 ClickOnce 部署?您需要在项目设置中指定“这是一个完全信任的应用程序”。
  • ClickOnce 不是 asp 吗?这是一个桌面应用程序。
  • ClickOnce 是一种部署技术,可帮助您通过单击页面上的超链接来部署 Windows 窗体应用程序或 WPF 应用程序:en.wikipedia.org/wiki/ClickOnce。如果您没有使用 ClickOnce,那么您也许可以使用PermView 工具来检查您的应用程序拥有哪些权限。我相信您需要将UIPermission 授予您的程序集(您也可以通过AssemblyInfo.cs 文件来完成)。
  • @Mrchief 我今晚会进入它:)
  • 也尝试添加这一行:protectedSet.AddPermission(new UIPermission(PermissionState.Unrestricted));

标签: .net security appdomain


【解决方案1】:

添加此行(以解决您遇到的异常):

protectedSet.AddPermission(new UIPermission(PermissionState.Unrestricted)); 

有用的文章:http://www.reliablesoftware.com/articles/UnderstandingSecurityActions.html

【讨论】:

    【解决方案2】:

    您可以在使用 Assembly.Load 方法实例化您的自定义程序集之一时指定自定义 Evidence 对象,或者查看here

    【讨论】:

    • 我不是在 ASP 上这样做,而是在桌面应用程序上尝试这样做。我已经尝试将证据与Load 一起使用,但我收到SecurityException 声明“请求System.Security.Permissions.UIPermission 类型的权限失败”。请参阅更新的答案。
    猜你喜欢
    • 2021-04-22
    • 1970-01-01
    • 1970-01-01
    • 2014-10-15
    • 1970-01-01
    • 1970-01-01
    • 2014-03-07
    • 2011-01-09
    • 1970-01-01
    相关资源
    最近更新 更多