初步软件许可实施的想法

Ros*_*oss 1 java security licensing

我正在尝试决定如何为我编写的某些软件实现一个非常基本的许可解决方案.该软件将在我的(假设的)客户端机器上运行,其想法是如果客户端在超过n台机器上运行它,软件将立即退出(带有友好消息)(n是许可证的数量)已购买).此外,客户非技术娴熟,"基本"足够好.

这是我目前的设计,但鉴于我对该主题几乎没有经验,我想在开始任何开发之前询问它:

  • 远程服务器使用包含两列的表来托管MySQL数据库:客户端密钥和许可证数量
  • 客户端应用程序在启动时连接到MySQL数据库,提供它的客户端密钥,我将其放入打包到分发中的属性文件中(我将为每个新客户端创建一个新的分发)
  • 有可能,我需要第二个表来存储验证历史记录,因此通过一些简短的逻辑,软件可以决定它是否可以在给定的机器上运行(可能是每24小时使用该软件的n台机器的滑动窗口)
  • 如果软件无法建立与MySQL数据库的连接,或者确定它每天都在n个允许的机器上,则关闭
  • 托管MySQL数据库的远程服务器的连接信息应该硬编码到应用程序中?(这听起来不错,但除此之外,他们可以将其指向其他一些始终验证成功的服务器)

我认为这涵盖了我的初步设计.目的是虽然它肯定不是完全证明,但我认为我至少有点难以创建一个易于共享的破解解决方案.此外,我可以轻松调整给定客户端/密钥对的许可证数量.

我必须知道这已经完成了一百万次,所以请告诉我一个更好的解决方案,它实现起来同样简单,并提供相同(低)的安全性.如果使用外部库,我更喜欢Java,因为这就是软件编写的内容.

Jon*_*ler 5

我建议它可能不值得麻烦.客户可能不是那些精通技术的人,但是如果值得花时间,他们会破解它,如果不是,他们就不会使用你的软件了.

您不讨论配置过程 - 您如何知道哪台机器包含MySQL数据库.您不会讨论如果MySQL数据库出现故障会发生什么.

坦率地说,第一次出现问题时,他们可能会发现他们不喜欢软件足以继续使用它,或者他们会找出如何绕过系统.即使最终用户不精通技术,他们也可能拥有内部技术支持.

我不会浪费你的时间.如果您需要许可证管理系统 - 请使用专业管理系统.否则,就信任和合理的法律条款开展工作.