19

我正在开发一些(wordpress)插件,我计划为任何想要使用它的人收取许可费。

因此,我需要一种方法来确保该插件不会上传到任何人都可以下载并免费使用的服务器。

所以我在考虑使用 API 密钥。有效的 API 密钥 = 用户可以使用插件。无效 = 插件不起作用。

我看过这篇文章PHP API Key Generator,但我对此并不了解。

我也知道,因为它是 PHP,任何人都可以进入代码并禁用 API 检查(我只是在猜测)

保护我的插件的最佳方法是什么?API 密钥?其他方法?有没有人有关于这个主题的任何好的教程的链接?

4

5 回答 5

18

如果您的插件依赖于与您自己的服务器的交互,那么 API 密钥是防止非付费用户使用它的好方法。
但是,如果它不需要与您的服务器交互,那么任何具有一点 PHP 知识的人都可以修改您的插件以删除 API 密钥检查。

这里的一个主要问题是插件的许可。WordPress 是 GPL,而 GPL 有一个条款要求“衍生作品”也必须在 GPL 下获得许可。(这是一种轻描淡写的说法:事实上,整个 GPL 都是基于该条款,没有它就无法真正工作。)
关于插件是否可以被视为“衍生作品”存在很多争论。在我看来它不是,我认为试图强迫它被视为一个是不道德的。然而,核心 WordPress 开发者 Automattic 和自由软件基金会(编写 GPL 的组织)声称 WordPress 插件在法律上必须使用 GPL,并且不得使用其他许可证。
到目前为止,还没有法庭案件,因此也没有先例,但是围绕几个不使用 GPL 的主要 WordPress 插件存在相当大的敌意,Automattic 基本上威胁要采取法律行动,而插件开发人员表示“请告我”。不完全是一个漂亮的情况,我想说,不管情况的道德性如何,事实是负面宣传通常超过封闭源代码插件的好处。

总结一下:您的插件基本上必须是 GPL,这意味着您必须提供未加密的源代码,因此任何人都可以修改您的插件以删除您添加的任何限制。但是您应该很容易说服大多数潜在客户想要从您那里购买插件而不是使用分叉版本 - 您可以提供支持、升级等可能无法提供的好处“破解”版本。

有几家公司在 GPL 下成功销售插件并且没有保护(API 密钥等)。尽管理论上任何人都可以下载插件并将其上传到任何人都可以下载的公共站点,但实际上没有人愿意使用不一定会针对新版本的 WordPress 更新的非官方版本。因此,即使没有任何形式的保护,销售插件似乎也是一种可行的商业模式。

当然,所有这些都假设有人不只是 fork 你的插件并继续单独维护代码库。你对此无能为力——但这不太可能发生。

对于它的价值,如果您想让决定重新分发您的插件的人生活困难,您可能需要考虑以下几点:

  • 即使插件本身是开源的,您仍然可以在插件名称上声明商标权,因此您可以合法地阻止他们使用您的客户知道的相同名称
  • 只有插件中的 PHP 代码必须是 GPL 的 - 您可以分发任何不包含 PHP 的文件,这些文件在单独的许可下与 WordPress 交互以禁止重新分发。例如,CSS、JavaScript 和图像不必遵循 GPL。
于 2010-10-22T00:58:27.013 回答
6

可以在这里找到一篇很棒的文章,尽管这并不涵盖技术,只是在您进一步探索路线之前要记住的事情 http://www.littlehart.net/atthekeyboard/2007/07/20/protecting-your- php代码/

尽管为了更直接地回答您的问题,请使用 API 密钥系统,然后使用类似于 Zend Guard 的方式对您的 PHP 进行编码,因此用户不能在代码被编码时直接进入并删除 API 密钥检查。

于 2010-10-21T13:25:57.973 回答
5

使用 API 密钥可能没问题。您不必担心有人盗版您的插件,因为无论您做什么都会发生。知道删除您的 API 检查的人足够聪明,可以删除您在脚本中设置的任何类型的保护。你不用担心这些人。

使用 Zend Guard 之类的产品不是一种选择。它要求最终用户在他们的系统上安装 Zend Optimizer,而您不能保证这一点。

话虽如此,您无论如何都不能混淆或隐藏您的源代码。Wordpress 是在 GPL 许可下获得许可的,它们严格禁止插件拥有任何其他许可。虽然您可以出售插件,但您不能隐藏源代码。

于 2010-10-21T22:42:05.083 回答
1

老实说,我不认为有一个防弹工具可以避免你的插件被无效,看看 WProbot,他们有一个非常可靠的方法来验证许可,但仍然有数百个无效版本。

只要人们必须下载您的代码,就会有人将他的手放入其中并取消它,您可以做的是提供像 s2member 和 AllinOneSEO pack 这样的免费版本。

于 2010-10-22T23:55:56.633 回答
-1

我真的在想这些。但它是 GPL,我们不能隐藏我们的代码。我认为,我们必须做更复杂的读取 api 密钥系统。我正在考虑这样做。但是如果它是开源的,那么不幸的是,如果系统是开源的,那么有一种方法可以解决这个问题。例如,您可以查看: PHP AES 加密/解密

于 2017-02-15T23:45:39.267 回答