【发布时间】:2009-07-21 21:58:29
【问题描述】:
假设我编写了一个 .Net dll 并希望将它与我的应用程序一起分发。如何防止任何精通安装 VS 副本的用户将对此 dll 的引用添加到他们自己的应用程序中?
【问题讨论】:
标签: .net visual-studio security dll
假设我编写了一个 .Net dll 并希望将它与我的应用程序一起分发。如何防止任何精通安装 VS 副本的用户将对此 dll 的引用添加到他们自己的应用程序中?
【问题讨论】:
标签: .net visual-studio security dll
没有办法阻止用户添加参考。这是您的 DLL 部分的被动操作,您无法阻止它发生。
不过,您可以做的就是让添加引用成为不值得的操作。例如,如果 DLL 中的所有类型都是内部的或私有的,则不仅仅是为用户添加引用以使用 DLL 中的类型。此外,混淆 DLL 会使它变得更加困难。
【讨论】:
您不能阻止某人添加对您的 dll 的引用。但是,如果他们确实添加了引用,您可以做的是让他们难以使用它。
代码访问安全性 (CAS) 可用于防止未经授权的代码调用程序集,但这会影响调用的性能,并且为此目的是多余的。
另一种方法是将 dll 中的所有内容标记为内部。如果您有其他程序集需要访问 dll 中的类,请使用 InteralsVisibleTo 属性使它们成为朋友程序集。这允许其他程序集访问您的 dll 的内部类。将其与已签名的程序集(与InternalsVisibleTo 定义一起使用)绑定在一起,就足够了。
【讨论】:
您可能会发现“StrongNameIdentityPermission”类很有帮助
【讨论】:
我严重怀疑这是可能的。即使是这样,一个全力以赴的程序集也可以伪造所有证据并伪装成你的程序。
【讨论】:
虽然 .NET 不允许真正的静态链接,但您可以伪造它,将您的 dll 和 exe 打包到一个程序集中。这是一个可以做到这一点的工具: ILMerge 可能还有其他人。
【讨论】:
您可以混淆 DLL(工具 -> Dotfuscator 社区版),使其不值得引用您的 DLL。
【讨论】: