【问题标题】:Restrict access to .NET assembly?限制对 .NET 程序集的访问?
【发布时间】:2010-11-27 19:42:57
【问题描述】:

有没有办法让 .NET 程序集仅可供授权来源访问?

我的意思是我想要一个包含组件的 DLL,但我不希望任何人能够使用这些组件,但我的解决方案中的其他 DLL 和 EXE 除外。 不过,我确实希望它们位于单独的 DLL 中。

如果这个功能存在的话,对命名空间的限制也是一个好主意。

有办法吗?

【问题讨论】:

  • 正在使用操作系统访问控制列表好吗?获取用户并检查对某些已知文件、目录等的访问权限...
  • 欢迎任何事情,请发表您的想法的答案,以便人们投票。

标签: .net security dll assemblies namespaces


【解决方案1】:

您可以创建内部类。并使用InternalsVisibleTo 属性让您指定的程序集访问这些类。

程序集应该是强命名的。您可以在this article 中找到有关该属性的更多信息。

【讨论】:

【解决方案2】:

Internal 类的问题是 Internal 在 IL 中没有意义,可以通过反射调用类。因此,使用 InternalsVisibleTo 对编译器来说更像是一个帮手。

您可以使用StrongNameIdentityPermission 更进一步,它将检查调用代码的强命名程序集的公钥 - 如果公钥不匹配,则会引发安全异常。即使通过反射调用代码也是如此。

【讨论】:

    猜你喜欢
    • 2012-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-13
    • 2011-04-17
    • 2011-04-27
    • 1970-01-01
    • 2016-07-18
    相关资源
    最近更新 更多