应用程序验证许可证enforement?

问题描述:

如果我对我的应用程序执行许可限制,比如第一次运行应用程序,那么我的应用程序应该每次检查限制(可能是加密的许可证文件)吗?你如何设计这部分?什么是最好的方法?基本上我希望能够以某种方式节省CPU周期(加密意味着解密等等)。我希望你能理解我的担忧。应用程序验证许可证enforement?

这真的取决于你想如何处理它在你的应用程序,你想利用用户操作的类型。

,如果你只在第一次加载检查,你将需要存储验证的成功/失败的地方,让你的应用程序知道它是否是合法与否。这就成为一个问题,因为你需要验证你的系统是唯一实际存储/更新信息源的东西。

+0

所以在第一次运行,如果我保存“OK,我发现所有的数据的有效许可证我需要运行10个用户的”,那么下一次我不会需要嗯... – abmv 2009-06-30 14:42:24

+0

是的,只要你以安全的方式保存这个文件,我喜欢的方法是一个签名的,加密的XML文件......就像一个魅力。 – 2009-06-30 15:01:17

取决于它是什么样的应用程序。

如果它是一个桌面应用程序,一旦许可证密钥验证......你可以设置一个位的地方,让你的软件,知道它是在许可模式下运行。确保该位在应用程序文件夹之外的某个位置(这样,如果有人直接将您的应用程序复制到另一台计算机,那么您的软件将知道它不再获得许可)。

如果你试图做一个Web应用程序,在某处你的网站目录中的加密许可证文件似乎是一个流行的解决方案。该文件包含许可证类型和域名......然后,您的网络应用程序会在每次请求时验证许可证(有一点额外开销,但您可以快速编写该代码)。

这取决于您真正希望获得授权的安全程度。我建议每次应用程序启动时检查许可证密钥 - 这对于CPU /内存操作来说不应该太昂贵。如果你只在其上运行的第一次检查,那么它是相当容易被黑客攻击,关键可以一遍又一遍的拆卸和安装另一台计算机上。

通常,大多数第三方许可解决方案(如FLEXnetRLM)都建议您至少在每次程序运行时都验证应用程序许可证。通常至少这样做并不是太昂贵。

在某些情况下 - 你必须确定这是否适用于你 - 它可以使意义更常做的许可检查。例如,分别对程序的某些软件许可证组件进行检查,并在每次访问该组件时检查该组件的许可证。使用商业应用程序,就像上面提到的应用程序一样,这不是那么昂贵,所以这是相当普遍的做法。