1

我想防止将我的定制 CMS 从一个域转移到另一个域,并且我希望它只能在购买它的域上运行,并且只能在购买后的 1、2 年内使用。

代码生成部分不是问题,但如何防止它被黑客修改是最难的部分。

例如 vBulletin 保护之类的东西。(我知道它也可以无效)

如何在我用 php 编写的 CMS 中实现这样的东西?

我认为它需要在整个应用程序的各个地方传播变量检查并以某种方式屏蔽,因此依赖性不容易检测和删除。

我知道这是一个非常困难和困难的话题,所以我很欣赏一些方向,比如书籍、网络讨论或文章。

顺便提一句。连接到我的服务器并检查域是否正常不是一个选项,我的服务器可能已关闭,客户端也可能由于无法连接而关闭。

4

1 回答 1

4

你可以做一些事情的组合..

  1. 可以为新客户端域提供生成的许可证密钥,这些密钥对于您的软件运行所需的每个客户端安装都是唯一的。密钥应该为每个托管域绑定一个,并且应该远程存储在您的服务器上以及本地安装的客户端上。

  2. 当您或其他人第一次安装 cms 时,需要输入许可证密钥并使用远程服务器进行验证。这应该足以满足初始设置时间。在远程数据库中存储有关服务器的一些信息。如果此远程过程失败,安装应该会失败。想出一些巧妙的方法来使其成为必要和必需的,例如获取要存储在数据库中的加密密钥。

  3. 在安装期间或之后,您可以生成(或不生成)加密密钥,并在您的代码所需的应用服务器上的文件中存储唯一的内容。超级便宜的是创建文件 /MY-CUSTOM-CMS-LICENSE.txt ,其中包含纯文本密钥。这可以是稍后验证的另一个向量。如果您发现一个复制了您的 cms 的网站,您可以查看此 txt 文件。

  4. 让您的软件时不时地呼叫您的服务器,然后发送密钥和一些服务器信息(IP、主机等)。它不必依赖于您的服务器即可运行。这意味着如果软件失败,您可以让软件运行。时不时打电话回家是非常有帮助的。例如,每 X 天在您的服务器上 ping 一个 url,如果您的服务器出现故障,只需让它在第二天进行回拨检查。这很方便的一个原因是,如果您的客户端将应用程序文件夹从一个域复制到另一个域以设置第二个非法站点,一旦他们运行 index.php 文件,它将调用 home。如果他们没有检查您的代码的每一行并且甚至不知道它是否这样做,他们将很容易被抓住。所有你需要做的就是检查一些可以说谁“打电话回家”的日志。

  5. 为您的产品编写适当的软件许可协议,并将其放在应用程序根目录中名为 LICENSE 的文件中。这将确保客户(及其开发人员)意识到复制和重用不是免费的。稍后如果有人复制它,你(或你的律师)可以指着文件说“你没读过这个生涩的男孩吗”

  6. 使代码中的某些东西(或许多东西)对您的代码是唯一的。例如,默认情况下 wordpress 的管理员是 /wp-admin 并且他们的应用程序中的几乎每个文件都以它开头,wp-这使得它很容易被检测到。将整个应用程序添加到一个特殊文件夹中。将元标记添加到所有输出,例如<meta name="generator" content="vBulletin 4.0.4" />. 您可以将许多其他内容合并并写入您的应用程序中,这些内容可能会表明它是您的代码。关键是要拥有如此多的东西,使移除所有东西的工作成为一项艰巨的任务,或者只是让小偷感到厌烦。我认为没有人会疯狂到重构你所有的代码只是为了窃取它。如果他们确实删除了这些代码位并转售/重复使用它,那么您就有更强有力的诉讼理由。

  7. 您可以编写一个脚本来抓取网络(呃),或者只是在谷歌上进行搜索,甚至设置谷歌警报以通知您是否找到了您在应用程序中放置的任何可检测方法(如 #3、#4、#5、 #6, #8)

  8. 您可以购买像 www.maxcdn.com 这样的 CDN,并在其中托管一个 JavaScript 文件并将其放入您的代码中。<script src="http://cms-headquarters.example.com/license.js">因为它在 CDN 上,所以失败的可能性很小,如果它宕机一周也没关系,你需要做的就是检查谁没有访问你的服务器。

  9. 混淆您的一些代码以增加烦人的威慑力。

关于 vbulletin 是如何做到的:

最后,这是一个试图提供部分解决方案的 PHP 类:PADL (PHP Application Distribution License System)

于 2012-12-11T21:27:50.650 回答