限制对.NET程序集的访问?

时间:2009-09-12 21:31:10

标签: .net security dll assemblies namespaces

有没有办法让.NET程序集只能被授权来源访问?

我的意思是我想要一个包含组件的DLL,但我不希望任何人能够使用这些组件,但我的解决方案中的其他DLL EXE。 我确实希望它们在分离的DLL中。

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

有办法吗?

2 个答案:

答案 0 :(得分:6)

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

组装应该是强名称。您可以在this article中找到有关该属性的更多信息。

答案 1 :(得分:5)

内部类的问题是内部在IL中没有意义,可以通过反射调用类。所以使用InternalsVisibleTo更像是编译器的帮助器。

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