许可证服务器/销售软件的工作流程

时间:2009-12-01 19:37:01

标签: php licensing

我有一个我卖的产品。用户购买许可证密钥并将其输入配置以启用产品。

我的第一个想法是......

产品在启动时使用许可证密钥ping许可证服务器,如果服务器返回未授权(过期许可证,无效等),则会失败。但是如果许可证服务器出现故障怎么办?

另一个想法是只检查许可证一次,或者每30天检查一次,或者只是每次输入许可证(重新安装应用程序等)。

有没有更安全的方式(至少对脚本小子的一些体面保护)这样做?我从未销售过软件,但我知道对软件进行逆向工程/修改以避免需要许可证是多么容易。更复杂的是,这是在PHP中。

5 个答案:

答案 0 :(得分:7)

对于新产品,答案始终是:

不要担心复制保护。除非人们主动盗版您的产品,否则没有理由添加“电话回家”功能。

大公司倾向于拥有适当的许可证,因此他们会向您支付许可证。大多数小公司都是道德的,任何许可证问题都可能是一种疏忽。现在你应该更加担心的是让你的名字出来并让人们熟悉你的产品。有人在家里使用你的产品从未支付过许可证,对你来说是件好事。让人们使用您的代码,使其成为企业将很难改变其他东西,然后担心确保他们不是免费使用它。这是一个版本3问题,如果你做得那么远。

答案 1 :(得分:2)

您的模型之前已经过尝试过。如果您真的担心人们窃取您的软件,那么您最好的选择是在应用程序启动时继续ping许可证服务器。是的,服务器的下方存在故障,人们将无法使用您的应用程序。

对于我的软件,我更喜欢在用户第一次在我的软件中注册密钥时ping服务器,如果他们需要获取我的软件更新的话。这基本上允许我的用户自由使用他们的应用程序,直到他们重新安装或获得那些“令人敬畏”的新更新!如果他们没有获得更新,他们可以使用该工具而无需联系互联网。这是我能想到的最好的情况。

无论你做什么,总会有一个解决方法!黑客只会修改他们的主机文件,在本地指向您的许可证服务器。他们显然会破解或分享你的钥匙。我们生活在这是一个悲伤的世界。因此,为了让您的用户感兴趣,您必须为他们提供更好的内容以跟踪非法使用。我建议在第一次在后台执行此操作后,用户无论如何都无法获得更新,所以在这个时间点,没有必要告诉他们您要重新进行身份验证。

我想我应该添加一些东西。我不建议您托管自己的许可证服务器。如果可能的话,您应该始终将此外包给更大的公司。一个可以保证他们的服务器可以运行很长时间的一个。此外,请确保始终拥有多个许可证服务器,如果一个服务器发生故障,另一个服务器可以启动。

我的公司即使它失败也有义务通过合同始终保持软件许可服务器存活长达10年。我知道很多公司都会向用户发放年度许可证,这是让用户更新或承担后果的另一种好方法。

同样,所有这些都是很多工作,你应该确保你的工具确实需要这么多的身份验证,因为到目前为止还没有任何不能被破坏的东西。

答案 2 :(得分:0)

查看Zend Guard,它来自PHP的创建者,它允许您同时进行代码混淆和许可。

答案 3 :(得分:0)

包含失效日期的文件和在服务器上使用非对称密钥创建的数字签名怎么样?在安装基础上,检查文件中的日期和签名。可以仅使用公钥来检查签名。这个问题当然是如果有人用自己的密钥重新签名文件并替换公钥,那么他们可以让你的产品永远工作。但我不知道脚本小子是否可以做到这一点。

答案 4 :(得分:0)

您可以使用一些工具来保护PHP代码。其中一个被称为ioncube,至少还有一个,但我不记得它叫什么。