最好的解决scheme来保护PHP代码而不encryption

首先,我不是在寻找奇迹……我知道PHP是如何工作的,并且没有真正的方法来隐藏我的代码而不使用encryption。 但是,在运行的服务器上安装了扩展的代价。

我正在寻找不同的东西,虽然…我不想encryption我的代码,甚至混淆它。 有许多PHP脚本没有encryption/模糊代码,但它们是商业应用程序。 例如,vBulletin和/或IP.Board论坛应用程序。

我只是想知道这些人使用什么方法来处理他们的应用程序。

我也打开任何其他的build议。

请注意,我是一个人,不为公司工作。 我的产品也非常具体,它不会卖太多。 我只是想让你们知道,我不能咨询法律专业人士起诉某人或准备商业执照。 我只是寻找一种简单的方法来保护我的简单产品,如果确实有可能,不知何故…

混淆事物只会给你的合法,守法的客户带来不便,而那些会把你甩开的人不是你的目标客户。 (编辑了关于混淆的其他想法)

另一个保护你的软件的build议是:创build一个商业模式,其中的代码是你的产品价值的一个不完整的部分。 例如,出售产品许可证以及访问您在您的网站上pipe理的某些数据,或以订阅模式或客户支持授权产品。

deviseEULA是一个法律问题,而不是编码问题。 您可以先阅读您使用的产品和网站的EULA文本。 你可能会发现一些有趣的细节!

创build一个专有的许可证是非常灵活的,可能是一个超出了StackOverflow预期范围的主题,因为它不是严格的编码。

想到EULA的某些部分:

  • 如果产品有缺陷或造成损害,则限制您的责任。
  • 详细说明客户如何使用他们的许可软件,多久,有多less台机器,有没有重新分配权利等等。
  • 给你权利审计他们的网站,所以你可以执行许可证。
  • 如果他们违反了最终用户许可协议,他们将失去使用软件的特权。

您应该咨询法律专业人员准备商业EULA。

编辑:如果这个项目不能certificate律师的费用,请检查这些资源:

  • joelonsoftware上的“ EULAbuild议 ”
  • “ 如何编写最终用户许可协议 ”

你需要考虑你的目标:

1) 你是否试图阻止人们阅读/修改你的代码? 如果是的话,你需要一个混淆/encryption工具。 我已经使用Zend卫士取得了很好的成绩。

2) 你是否试图阻止未经授权的代码重新分配? EULA /专有许可证会给予您防止这种情况的法律权力,但不会真正阻止它。 密钥/激活scheme将允许您主动监视使用情况,但可以删除,除非您也encryption您的代码。 Zend Guard还具有将特定脚本locking到特定客户机器和/或创build代码的时间限制版本(如果这是您想要的)的function。

我不熟悉vBulletin等,但他们需要encryption/模糊或相信他们的用户做正确的事情。 在后一种情况下,他们拥有保护EULA的权利,该EULA禁止他们认为不受欢迎的行为,法律制度支持违反EULA。

如果您没有准备好/能够采取法律行动来保护您的软件,而您又不想encryption/混淆,则可以使用以下方法:a)使用EULA进行发布,以便在需要时有合法的选项并希望得到最好的结果,或者b)考虑一个开源许可证是否更合适,只是允许重新分配。

你可以使用一个PHP编译器:

Roadsend

PHC

我有一段时间没有看过VBulletin源代码,但是他们在2003年前后的做法是在代码中embedded一个调用他们的服务器的代码。 IIRC,它是在一个很长的代码行(如200-300 +字符长),并分解了几个string连接等。

如果你盗版它没有什么“坏” – 论坛仍然100%的工作。 但是,您的服务器的IP与其他信息一起logging下来,他们使用这些信息进行调查并采取法律行动。

您的许可证号码已embedded此通话中,因此他们可以轻松跟踪给定的许可副本在多less个IP /网站上运行。

如果您无法创build自己托pipe的“云应用程序”并通过Web访问,则可以考虑使用虚拟服务器(来自VMWare,Parallels,Sun等)创build虚拟设备并安装“lite “那个版本的Linux。 把你的PHP代码放在虚拟环境中,并在服务器上安装虚拟机。 确保创build一个方法来防止加载到根目录。 当然,这将涉及到亲自拜访客户。

他们根据专有许可分发他们的软件。 法律保护他们的权利,防止他们的客户重新分配来源,虽然这样做没有实际困难。

但是正如你可能知道的那样,软件产品的版权侵权(盗版)是一个相当普遍的现象 。

在我看来,但只是万一如果你的PHP代码程序是为独立模型编写的…最好的解决scheme是c)你可以将PHP包装在像Phalanger(.NET)的容器中。 因为每个人都知道它紧紧地绑定在系统上,尤其是如果你的程序是针对windows用户的。 你可以使用Windows编程语言(如.NET / VB / C#)或.NET中的prog.lang.family知道的任何你自己的保护algorithm。

真正保护你的php应用程序的唯一方法是不要共享源代码。 如果您在网上发布代码,或通过某种媒介将其发送给您的客户,则可能是您访问代码的其他人。

你可以添加一个独特的水印到你的代码的每一个副本。 这样你就可以追溯到一个单一的客户泄漏。 (但是这样可以帮助你,因为代码已经超出你的控制范围了吗?)

我看到的大多数代码都带有许可证,也许还有保修。 脚本顶部的一行告诉人们不要改变脚本,这可能就足够了。 自; 当我发现非开源的代码时,我不会在我的项目中使用它。 也许我有点愚蠢,但我希望ppl不要使用我的非OSS代码!

请参阅我们的SD PHP混淆器 。 处理庞大的PHP文件系统。 PHP服务器没有运行时需求。 无额外的运行时间开销

[编辑2016年5月]最近的答案指出,Zend不处理PHP5.5。 SD PHP混淆器的确如此。

所以让我看看,我们想要展示亚当,并且在树上有一些禁果,而且我们想阻止他们进食。

用一把燃烧着的剑有天使怎么样?

  1. 可能听起来很天真,我不知道你的应用程序实际上做了什么,但广泛使用包括什么?

  2. 对于合法用户来说,所有的软件应该是可见的还是只有部分? 因为您可以混淆并将源代码的副本合法化

  3. 你可以将PHP包装在Phalanger(.NET)

  4. 也许你担心外部窃取,也就是说你的代码可以在客户使用的networking上自由显示。 这可能是值得投资的廉价网站托pipe,每年50美元,注册您的合法客户与他们的代码中的序列,并让您​​的应用程序定期发布信息到您的网站。 至less,你会发现代码已经被泄露。 你可以在n天后自我推销,给你足够的时间联系你的客户,改变序列号。 这可能是整个代码中唯一混淆的include()