76

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

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

我只是想知道这些人在他们的应用程序中使用什么方法......

我也愿意接受任何其他建议。

请注意,我是单身人士,不在公司工作。我的产品也很专一,不会卖那么多。我只是想让你们知道,我不能咨询法律专业人士来起诉某人或准备商业许可证。我只是在寻找一种简单的方法来保护我的简单产品,如果确实可能的话,以某种方式......

4

10 回答 10

37

混淆事物只会给您的合法,守法客户带来不便,而会敲诈您的人无论如何都不是您的目标付费客户。(编辑了关于混淆的其他想法)

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

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

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

想到的 EULA 的某些部分:

  • 如果产品有错误或造成损坏,则限制您的责任。
  • 详细说明客户如何使用他们的许可软件、使用多长时间、在多少台机器上、有或没有再分发权等。
  • 授予您审核其站点的权利,以便您可以强制执行许可证。
  • 如果他们违反 EULA 会发生什么,例如他们失去使用您的软件的特权。

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

编辑:如果这个项目不能证明律师的费用是合理的,请查看以下资源:

于 2008-12-03T02:20:26.900 回答
15

你需要考虑你的目标:

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

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

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

如果您不准备/无法采取法律行动来保护您的软件并且您不想加密/混淆,您的选择是 a) 使用 EULA 发布它,以便在需要时拥有合法的选择并希望最好,或者 b) 考虑开源许可证是否更合适,只允许重新分发。

于 2008-12-03T03:04:31.070 回答
6

我已经有一段时间没有查看 VBulletin 源代码了,但他们在 2003 年左右使用的方法是在代码中嵌入对他们服务器的调用。IIRC,它在一个非常长的代码行上(比如 200-300+ 字符长)并且被分解为几个字符串连接等。

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

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

于 2008-12-03T03:08:57.643 回答
3

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

于 2009-08-17T17:59:34.243 回答
1

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

但您可能很清楚,软件产品的版权侵权(盗版)是一种相当普遍的现象

于 2008-12-03T02:17:07.107 回答
1

在我看来是,但以防万一您的 php 代码程序是为独立模型编写的……最好的解决方案是 c)您可以将 php 包装在像 Phalanger(.NET)这样的容器中。众所周知,它与系统紧密绑定,特别是如果您的程序是为 Windows 用户设计的。您只需使用 Windows 编程语言(如 .NET/VB/C# 或您在 .NET prog.lang.family 集中了解的任何内容)制作自己的保护算法。

于 2011-10-29T17:23:53.377 回答
0

真正保护您的 php 应用程序免受他人侵害的唯一方法是不共享源代码。如果您将代码发布在网上某个地方,或者通过某种媒介将其发送给您的客户,那么除了您之外的其他人可以访问该代码。

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

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

于 2008-12-03T23:49:57.077 回答
0

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

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

于 2009-09-04T03:51:47.737 回答
0

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

于 2014-08-01T06:47:46.770 回答
-6

所以让我看看,我们想让亚当和夏娃看到树上有一些禁果,我们想要一种方法来阻止他们吃...

有一个拿着火焰剑的天使怎么样?

  1. 听起来可能很幼稚,我不知道您的应用程序实际上做了什么,但是广泛使用包含呢?

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

  3. 您可以将 php 包装在像 Phalanger (.NET) 这样的容器中

  4. 也许您担心外部盗窃,这意味着您的代码在客户使用它时可以在网络上自由可见。这可能值得投资一个便宜的网站托管,每年 50 美元,用他们的代码中的序列号注册您的合法客户,并让您的应用程序定期将信息发布到您的网站。至少,您会检测到代码何时被泄露。您可以在 n 天后自行销毁它,让您有足够的时间联系您的客户并更改序列号。这可能是整个代码中唯一混淆的 include()

于 2011-03-31T00:51:45.960 回答