我为我工作的公司开发了一个信息管理系统。
现在,我想创建一种许可系统,以帮助防止任何人仅获取副本并将其设置在自己的家庭服务器上并将其用于任何目的。
我知道最简单的方法可能是在系统的每个页面上包含对存储在远程文件中的密钥的引用或类似的东西,但我认为这很容易通过一些努力来解决。
保护我的工作的最佳方式是什么?
在 PHP 中很难做到这一点,因为源代码对所有人开放,但是您可以执行类似的操作来修改索引以获取服务器的名称或 IP 并在您的数据库中检查它,如果您允许它,则该过程返回 ok 并且一切正常,否则您向索引发送自毁命令,索引将从其目录开始删除所有文件和文件夹,您可以在此处找到命令,您可以删除 maxdepth 参数以递归删除所有文件和文件夹,请记住,没有完美的解决方案可以解决您的问题,因为对方可以轻松更改索引源代码。
最好的方法是根据机器的硬件值生成密钥。所以要考虑内存的数量、处理器类型、速度、mac 地址、BIOS 版本等。一旦你有了所有这些值,就可以使用它们来生成哈希。每个用户还应该有一个唯一的 ID 用于他们的购买。首次使用该软件时,它应该将用户 ID 和哈希发送到您的服务器。每次运行软件时(以及在运行时的不同时间),软件都应将这两个 ID 发送到服务器。如果散列与对应于用户 ID 的散列不匹配,则拒绝访问软件。如果用户更改他们的硬件或想要安装在不同的机器上,他们应该能够提交重置其哈希的请求。还要确保您使用 SSL 进行许可通信,并尽可能混淆您的代码。
开发自己的许可系统似乎比乍看起来更复杂和复杂。最好使用市场上已有的解决方案来节省大量时间和金钱。
如果您的产品在 Windows 下运行(Linux 即将推出)并且使用 C++ 编写,请查看http://activation-cloud.com 。
它在复制保护方面做得很好(将计算机 ID 保留在服务器上)。我们目前正在研究体面的抗裂保护。
你可以去 Wordpress Licensing System, general PHP and Software License
如果你不能保证 .php 文件会被盗,那么最好的办法就是混淆源代码——这样它就变得不可读并且很难转换为常规代码。我不在这里做广告,只是我知道 Ioncube 做得很好。
我还建议您使用不止一种方法——比如许可文件和混淆——这将更难破解。
另请参阅此答案。