保护私人.Net程序集是必要的吗?

时间:2009-09-17 23:31:41

标签: .net security assemblies

我目前正在开发一个.net项目,我正在分成不同的程序集。

一个程序集(一个dll)将包含大部分域逻辑,而其他程序集(.exe)将包含大部分表示和控制逻辑。

我的问题是,如果我想阻止某人获取我的DLL,并将其作为Visual Studio的参考添加并在未经我许可的情况下为该模型开发新界面,我是否可以将这些程序集构建为私有?将程序集构建为私有意味着只有一起构建的程序集可以相互引用吗?

构建应用程序的最简单方法是什么,并使其DLL和EXE作为单个逻辑单元运行,在构建项目时,DLL程序集只能由引用程序集引用。

此致

2 个答案:

答案 0 :(得分:2)

InternalsVisibleToAttribute可以提供帮助。只需使用.exe程序集全名将其打到.dll上,然后在.dll internal中创建所有内容:

[assembly:InternalsVisibleTo("full name of the .exe")]

internal class Whatever { }
internal interface IWhatever { }

如果您使用更安全的strong names,否则我可以创建一个与您的文件名相同的.exe。

还有一个关于Friend Assemblies的MSDN页面。

答案 1 :(得分:0)

您是否试图防止偶然或故意滥用您的集会?对于偶然的滥用,通过朋友组装使用声明半公共API将起作用。但是,任何完全受信任的代码都可以通过反射调用程序集中的低可见性成员,因此限制可见性无法防止故意滥用。对于这种情况,有时候对半公共API进行模糊处理是为了让非预期的调用者更难以使用它。