我想要创建一个WordPress插件,但也希望确保插件只能在被激活后才能使用,而串行密钥应该是每个域的唯一。
假设这样做的最佳方式是什么:
发布于 2010-08-13 14:58:14
上的一些数据
我不会将插件的所有处理都放在您自己的服务器上,而是选择一两个重要的函数,并将它们保存在您的系统中。然后,每个使用插件的站点都需要一个API密钥,以便他们能够与您的服务器进行通信。
另一种选择是基本的加密设置--这实际上是我已经玩了一段时间的系统,我只是还没有费心将它部署到任何地方。代码本身(保持对GPL的忠诚)都是纯文本,就像您所期望的那样。但是,所有存储的数据(默认值、插件设置等)在保存到数据库之前都是加密的。这里的诀窍是,远程系统上的插件没有解密密钥,为了解密数据,它必须将其API密钥发布到您的系统,然后系统用解密密钥进行响应。然后,这可以存储在一个短暂的(临时选项)前一段时间,然后被冲-这样你就不会有一个网站访问你的服务器每2秒在繁忙的交通。
但是,这种方法的缺点可能大于好处(这就是为什么我还没有在任何地方部署它)。首先,一个精明的程序员可以捕获解密密钥,然后他们不再需要您的服务器了。或者,他们只需清除所有的加密/解密挂钩,并以明文运行。这是开放源码对用户的好处,也是开发人员想要分发一个自由但受限的系统的不利因素。
另一个缺点是对服务器的依赖。在一个瞬间存储一个密钥可以减轻你服务器的一些负担.但是,如果你的站点被关闭一到两个小时,那么每个使用插件的站点都会被关闭一到两个小时,除非你计划了某种优雅的停用。而且,如果人们继续使用您的系统,这将意味着您必须无限期地保持所述服务器的正常运行。
的特性
最后一个选项,也是我正在积极使用的一个选项,就是拆分插件的功能重置和功能。该系统的核心(UI、基本功能等)可以免费获得,无需注册。对于更高级的功能,用户必须注册他们的副本,获得一个激活密钥,然后将该键输入用户界面以完成该过程--插件,然后与您的服务器进行验证,并向系统下载额外的额外“附加”。
这里的缺点是,一旦下载,所有的代码现在都在用户的网站上,在GPL下,他们仍然可以重新分发完整的包。优点是它只依赖于您的系统一次,而不需要任何类型的长期下载/处理支持。
无论您如何决定继续前进,您要么会因为在服务器上维护某种外部API而受到影响,要么将系统的全部源代码提供给用户。如果你在你的系统上保留了一些功能,你几乎必须保证100%的正常运行时间,这是值得的。如果要提供完整的源代码,就没有办法(在GPL下)阻止其他人重新分发您的系统。
发布于 2010-09-05 10:14:53
您不能将源代码隐藏在WordPress用户面前,也不允许您限制插件的重新分布,因为这涉及到许可问题。
您正在用您的插件创建一个WordPress派生程序,您的用户有权获取它的来源并自由地重新发布它(参见自由软件的四种自由)。
假设WordPress是根据GPLv2授权的,并且您有非美国客户,那么您应该处理在您的(“受保护”的)产品中可能存在的GPL违反行为的影响。
您正在尝试为您的用户实现供应商锁定。
发布于 2010-08-11 22:12:06
只有在自己的服务器上运行插件的主要功能,才能拥有任何半途而废的程序员无法破解的安全许可证,比如Akismet。用户必须向包含其许可证密钥的服务器发送请求。如果键签出,请在端执行源代码并将结果发回。
https://wordpress.stackexchange.com/questions/56
复制相似问题