无加密保护PHP代码的最佳解决方案

时间:2008-12-03 02:11:31

标签: php encryption obfuscation

首先,我不是在寻找奇迹......我知道PHP是如何工作的,并且没有真正的方法可以在不使用加密的情况下从客户端隐藏我的代码。但这需要在正在运行的服务器上安装扩展的成本。

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

我只是想知道这些家伙用于他们的应用程序的方法......

我也对任何其他建议持开放态度。

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

11 个答案:

答案 0 :(得分:35)

混淆事物只会给你的合法守法客户带来不便,而那些想要扯掉你的人并不是你的目标付费客户。 (编辑出关于混淆的其他想法)

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

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

创建专有许可证非常灵活,可能超出了StackOverflow的预期范围,因为它不是严格意义上的编码。

想到EULA的某些部分:

  • 如果产品有缺陷或造成损坏,请限制您的责任。
  • 详细说明客户如何使用其许可软件,使用多长时间,有多少台机器,有无再分配权等等。
  • 授予您审核其网站的权利,以便您可以强制执行许可。
  • 如果他们违反EULA会发生什么,例如:他们失去了使用你的软件的特权。

您应咨询法律专业人士以准备商业EULA。

编辑:如果此项目无法证明律师的费用,请查看以下资源:

答案 1 :(得分:14)

您需要考虑您的目标:

1)您是否试图阻止人们阅读/修改您的代码?如果是,您需要使用混淆/加密工具。我已经用Zend Guard取得了很好的成功。

2)您是否正在尝试防止未经授权重新分发您的代码? EULA /专有许可证将赋予您合法的权力以防止这种情况,但实际上并不会阻止它。密钥/激活方案将允许您主动监视使用情况,但除非您还加密代码,否则可以删除。 Zend Guard还具有将特定脚本锁定到特定客户机器和/或创建时间限制版本代码的功能,如果这是您想要做的。

我不熟悉vBulletin等,但他们需要加密/混淆或信任他们的用户做正确的事情。在后一种情况下,他们有保护EULA,禁止他们认为不受欢迎的行为,以及法律制度来支持违反EULA的行为。

如果您没有准备/能够采取法律行动来保护您的软件并且您不想加密/混淆,那么您的选择是a)使用EULA发布它,这样如果您有合法选择权永远需要它并希望最好,或b)考虑开源许可证是否更合适并且只允许重新分配。

答案 2 :(得分:8)

您可以使用php编译器:

Roadsend

phc

答案 3 :(得分:6)

我在一段时间内没有看过VBulletin源代码,但他们在2003年左右的处理方式是在代码中嵌入对服务器的调用。 IIRC,它是一个非常长的代码行(比如200-300 + chars long)并且在几个字符串连接中被分解。

如果你盗版它没有做任何“坏事” - 论坛仍然100%工作。但是您的服务器的IP与其他信息一起被记录,并且他们使用它来调查并采取法律行动。

您的许可证号码已嵌入此次通话中,因此他们可以轻松跟踪指定的许可副本运行的IP /网站数量。

答案 4 :(得分:2)

如果您无法创建自己托管并通过Web访问的“云应用”,那么您可以考虑使用虚拟服务器(来自VMWare,Parallels,Sun等)创建虚拟设备并安装Linux上的“精简”版本。将PHP代码放在虚拟环境中,并在其服务器上安装虚拟机。确保创建一种防止加载到root中的方法。当然,这将涉及亲自亲自拜访客户。

答案 5 :(得分:1)

他们以proprietary license分发他们的软件。法律保护他们的权利并阻止他们的客户重新分配来源,尽管没有实际的困难。

但是您可能已经清楚知道,软件产品的版权侵权(盗版)是pretty common phenomenon

答案 6 :(得分:1)

在我看来,但以防万一你的PHP代码程序是为独立模型编写的......最好的解决方案是c)你可以将php包装在像Phalanger(.NET)这样的容器中。因为每个人都知道它与系统紧密绑定,特别是如果你的程序是针对Windows用户的。你可以在.NET编程语言中编写自己的保护算法,比如.NET / VB / C#或.NET prog.lang.family中的任何你知道的。

答案 7 :(得分:0)

真正保护您的php应用程序免受其他攻击的唯一方法是不共享源代码。如果您在网上某处发布代码,或者通过某些媒介将您的代码发送给您,而不是您可以访问代码的其他人。

您可以为代码的每个副本添加唯一的水印。通过这种方式,您可以将泄漏追溯到一位客户。 (但是这对你有帮助吗,因为代码已经超出你的控制范围了吗?)

我看到的大多数代码都带有许可证,可能还有保修。脚本顶部的一条线告诉人们不要改变剧本,也许是应该的。自;当我找到非开源代码时,我不会在我的项目中使用它。也许我有点愚蠢,但我希望ppl不要使用我的非OSS代码!

答案 8 :(得分:0)

请参阅我们的SD PHP Obfuscator。处理庞大的PHP文件系统。 PHP服务器上没有运行时要求。没有额外的运行时开销。

[编辑2016年5月]最近的回答指出Zend不处理PHP5.5。 SD PHP Obfuscator可以。

答案 9 :(得分:0)

Zend Guard不支持php 5.5并且易于反转,请http://www.ioncube.com进行混淆。 http://wwww.phplicengine.com可以远程或本地许可脚本。

答案 10 :(得分:-6)

所以,让我看看,我们想要告诉亚当和前夕树上有一些禁果,并且我们想要一种方法来阻止他们吃...

拥有一把火焰剑的天使怎么样?

  1. 可能听起来天真,我不知道你的应用程序究竟做了什么,但是广泛使用包含呢?

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

  3. 您可以将php包装在像Phalanger(.NET)

  4. 这样的容器中
  5. 也许您关注外部盗窃,这意味着您的代码可以在客户使用时通过网络自由显示。这可能值得投资一个廉价的网站托管,每年50美元,用他们的代码中的序列注册您的合法客户,并定期将您的应用发布信息到您的网站。至少,您会检测代码何时被泄露。你可以在n天之后用自毁来推动它,给你足够的时间联系你的客户并更改序列。这可能是整个代码

  6. 中唯一混淆的include()