【发布时间】:2011-01-30 14:50:52
【问题描述】:
我正在尝试决定如何为我编写的一些软件实施一个非常基本的许可解决方案。该软件将在我的(假设的)客户的机器上运行,其想法是如果客户端在多于 n 台机器上运行该软件(n 是他们的许可证数量),该软件将立即退出(并显示友好的消息)已购买)。此外,客户并不精通技术,以至于“基本”就足够了。
这是我目前的设计,但鉴于我对该主题几乎没有经验,我想在开始任何开发之前询问 SO:
- 远程服务器托管 MySQL 数据库,其中包含两列的表:客户端密钥和许可证数量
- 客户端应用程序在启动时连接到 MySQL 数据库,并提供我已放入打包到分发中的属性文件中的客户端密钥(我将为每个新客户端创建一个新分发)
- 很有可能,我需要第二个表来存储验证历史记录,以便通过一些简短的逻辑,软件可以决定它是否可以在给定的机器上运行(可能是使用软件的 n 个机器的滑动窗口) 24 小时)
- 如果软件无法建立与 MySQL 数据库的连接,或者认为它超过了每天允许的 n 台机器,则它会关闭
- 托管 MySQL 数据库的远程服务器的连接信息应该硬编码到应用程序中吗? (这听起来是个坏主意,但否则他们可以将其指向其他始终验证成功的服务器)
我认为这涵盖了我最初的设计。目的是虽然它肯定不是完全证明的,但我认为我至少让创建一个易于共享的破解解决方案变得有些困难。此外,我可以轻松调整给定客户端/密钥对的许可数量。
我想这已经被做过一百万次了,所以告诉我一个更好的解决方案,它实施起来同样简单,并且提供相同(低)的安全性。如果使用外部库,我更喜欢 Java,因为这是编写软件的内容。
【问题讨论】: