如何保护.NET DLL

Mat*_*att 7 .net vb.net programming-languages

为您正在进行的项目保护DLL的最佳做法是什么?我有兴趣开发的某些DLL将具有数据访问层(DAL)和业务逻辑层(BLL)功能.可能有几个应用程序最终可以命中这些DLL来执行特定于业务的功能.

保护这些DLL的最佳方法是什么,以便它们只能由创建者的应用程序使用?

阻止未经授权使用DLL和防止可能的反编译的安全性都是可取的.

dth*_*rpe 5

一个选项可能是将DLL中的所有公开类标记为"内部"而不是"公共",然后使用DLL中的"InternalsVisibleTo"属性显式命名允许使用内部的DLL(以及可能的exes)类型.这可能要求所有参与者都是强名,但无论如何这都是好事.

最终,当您的代码在黑客的计算机上执行时,没有绝对的方法可以阻止确定的黑客访问您的代码.可以通过足够先进的工具和经验将机器可执行的所有代码拆解并重新组装成其他代码.

处理代码安全性的最佳方法是提出一个问题:"如果没有许可或授权,我们有多难以让某人使用此代码,以及我们愿意花多少时间/金钱来实现这一目标?" 如果你什么都不做,那么有人可以很容易地在其他项目中使用你的DLL.如果你做了一些简单的事情,你可能会让别人在其他地方使用你的DLL变得不方便.如果您投入数月的努力,您可能会使某人滥用您的代码变得非常困难,但您永远无法让它变得不可能.

一种尽可能接近绝对安全的技术是:不要在客户端(或黑客)的机器上执行代码.改为运行Web服务,并将代码保存在服务器上,黑客无法随意启动流程上的调试器或反汇编代码.然后,您的代码安全性由服务器位置的物理安全性和服务器端口的网络访问安全性定义.这些攻击向量比在黑客机器上执行的代码所做的任何事情都要难以规避许多数量级.

对于一些软件公司而言,将其部分应用程序从客户端迁移到云计算并不是为了获得更好的可扩展性或更容易的更新或降低成本,而是关于代码安全性和防盗版.