【问题标题】:Application verify license enforement?应用程序验证许可证执行?
【发布时间】:2009-06-30 14:36:08
【问题描述】:

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

【问题讨论】:

    标签: c# licensing


    【解决方案1】:

    这实际上取决于您希望在应用程序中如何处理它,以及您希望对用户采取什么类型的操作。

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

    【讨论】:

    • 所以在第一次运行时,如果我保存“好的,我找到了一个有效的许可证,其中包含为 10 个用户运行所需的所有数据”,那么下次我就不需要 mmm...跨度>
    • 是的,只要您以安全的方式保存它,我首选的方法是签名、加密的 XML 文件......就像一个魅力。
    【解决方案2】:

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

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

    如果您尝试开发一个网络应用程序,您的站点目录中某处的加密许可证文件似乎是一种流行的解决方案。该文件包含许可证类型和域名...然后您的 Web 应用程序会根据每个请求验证许可证(有点开销,但您可以使该代码闪电般快速)。

    【讨论】:

      【解决方案3】:

      这取决于您真正希望您的许可有多安全。我建议在每次应用程序启动时检查许可证密钥——就 CPU/内存而言,这不应该太昂贵。如果你只在第一次运行时检查,那么它很容易被黑客入侵,并且可以一遍又一遍地删除密钥并安装在另一台计算机上。

      【讨论】:

      • 一些哈希检查就足够了吗?
      【解决方案4】:

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

      在某些情况下 - 您必须确定这是否适用于您 - 更频繁地进行许可检查是有意义的。例如,某些软件单独许可程序的组件,每次访问该组件时都会检查该组件的许可。使用商业应用程序,就像上面提到的那样,这并不昂贵,所以很常见。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-02-15
        • 1970-01-01
        • 2022-10-05
        • 2013-11-05
        • 1970-01-01
        • 2012-02-28
        • 2014-09-25
        • 1970-01-01
        相关资源
        最近更新 更多