如何防止转换PHP源代码?

时间:2009-03-18 12:28:03

标签: php licensing protection

你有策略吗?如果我向客户出售网络系统,并且根据法律协议,客户不允许将其出售给其他人,我怎么能确定他不会这样做?

我的第一个想法是某种必须位于根目录中的密钥,该文件仅对该特定域有效。

其他想法?

更新1 我同意这主要是一个法律问题。但事实是:我有一个客户从我这里购买这个系统,然后卖给别人。他希望这个系统能够运作,这样他就可以轻松获利。打包Web服务器并将其出售的能力是规范的一部分。

更新2 另一个观点是this。在这种情况下,很难证明有多少经销商的软件来自我的原始系统。

更新3 混淆不是我的选择,真是讨厌它。

8 个答案:

答案 0 :(得分:16)

有些人使用像Zend Guard这样的混淆器,但老实说,我认为针对此类问题的技术解决方案注定要像DRM用于音频和视频内容一样。从根本上说,你给予他们的是工作,所以只是一个技术问题,让它以你不想要的方式运作。

这里的资源是(imho)合法而非技术性的。您与客户签订了一份合同,规定了他们能做什么和不能做什么。你有一份很好的律师合同草案。如果他们不遵守它,那么你几乎不得不把他们告上法庭。

不要指望任何形式的混淆或复制保护作为任何形式的保证。

这对于脚本语言尤其是一个问题,因为(尽管如此),它们基本上都是明文分发方法。 Java和.Net以及其他字节码编译语言有更多的保护,但它们也可以被反汇编成中间代码(但混淆在这里更有用)。真正编译的语言(例如c,C ++)具有最大的保护,因为将50兆字节的二进制文件反汇编成汇编程序代码通常没那么有用。

即便如此也没有保证。如果您对此不满意,那么您需要仔细选择您的客户,承担可能违反合同的风险(以及可能迫使您追求的可能执行)或找到其他工作。

答案 1 :(得分:4)

我认为唯一可以确定的方法是将您的产品作为托管解决方案提供,以便客户端永远无法访问代码。如果你构建它是为了这个目标,你仍然可以拥有经销商,让他们为系统设计外观,使它看起来像他们自己的产品。

这在我工作的地方运作良好,理论上客户可以将代码许可在自己的基础架构上运行,但它的定价水平只有大公司准备支付,大公司总体上更关注具有法律上的细节,因此不太可能与你的工作相关。

如果价格合适,人们非常乐意使用托管解决方案,它可以为每个人带来好处。客户不必担心设置所有内容,并且他们也可以安全地知道如果需要调整某些东西,我们(开发人员)就可以做到这一点。

答案 2 :(得分:3)

这是一个社会问题,而不是技术问题。您有版权法;不应该再需要了。 (任何和所有技术解决方案都相当于DRM,这本身就是无效的。)

关于您的更新:所以基本上您成为了这个客户的DRM供应商。 那么:客户端是否理解DRM无效?在浪费时间实施之前,先尝试教育他们 如果客户仍然坚持,我会仔细研究当前DRM供应商正在做什么。例如。很多handwaving,一些混淆,而且,呃......我不知道......他们还做了什么?无论哪种方式,您可以确定您实施的任何解决方案将在实施它的时间不到10%的时间内撤消 - 因此您可以花费尽可能少的时间来实现它。 (在它被删除之前,你写了“它在规范中”关于“确定系统没有被售出”:这可能意味着你已经同意建立一些技术上不可能的东西(你永远不能<强>肯定),并且需要你花费无限的时间来建立一些接近的东西......)

您可能会在第一次运行时调查应用程序是否联系某个中央注册表(嵌入式指纹,每次销售都不同,因此您知道谁传递了他们的代码)。这样,您的客户端就可以找到应用程序的运行位置,并有机会在未经许可的情况下联系使用该应用程序的用户。 (可能会将它们变成新的付费客户。)也许让中央存储库能够发送一个杀死信号?但是,确实可怕,而责任问题将是巨大的;尽可能避免。

答案 3 :(得分:2)

根据我的经验,模糊源是比它值得的更麻烦,除非你试图保持一些复杂的算法秘密。

我建议你做以下事情:

  1. 确保您和您的客户以及您的律师都理解并同意您的合同。
  2. 在每个源文件中插入一个简短的版权声明作为评论。
  3. 将版权声明作为HTML注释插入生成的网页(通过页面模板或php代码),因此“查看源代码”将证明您的代码位于未经许可的应用程序中。
  4. 如果你真的很担心,这不是一个仅限内联网的应用,你可以扩展(3)并将唯一的隐藏文字插入Google看到但不被用户看到的页面。

    这些都不会阻止一个坚定的小偷,但会帮助阻止并发现“意外”盗窃。

答案 4 :(得分:1)

禁止转售软件的正确方法是通过法律限制,而不是技术限制。让您的客户在他们同意不再转售的情况下签订合同。

技术预防措施普遍使产品变得更糟,同样在技术意义上,也会降低对客户的价值。技术保护越强,滋扰就越大。

例如,假设客户合法地想要更改其域名。他们应该买新的副本吗?我想不是。如果您告诉他们如何更改密钥文件以匹配其新域,则他们可以使用该信息使其能够重新销售。但是,无论他们提出何种技术伎俩,法律保护都适用。

答案 5 :(得分:1)

但问题是,当你不害怕客户倒卖你所做的,开箱即用,可以由律师跟踪。问题可能是客户正在重构它。我的意思是接受我许多小时的工作并改变一些事情并将其称为他......以较低的价格出售它并赢得业务......

这就是为什么我正在寻找保护我工作的技术解决方案。它也可能帮助我将律师的发票保持在最低限度,这是他/她保护我的工作所带来的巨大变化。

答案 6 :(得分:1)

  
    

我怎么能确定他不这样做呢?

  

你不能阻止它...期间。如果有人有消息来源,就没有办法阻止它们......你只能采取惩罚措施。

也许你的合同,除了禁止他们转售之外,还有与他们转售相关的价格,比如你通常支付的10倍或20倍,加上法律费用,如果要求他们付钱......换句话说,如果他们选择这样做的话,你会有一张很好的纸,上面有他们的签名已经有一个很好的预先商定的价格,如果他们继续卖掉它们需要付出代价。

答案 7 :(得分:0)

我还没有看到Ioncube的提及,所以想知道是否有理由不使用它?

是的,设置需要花钱,是的,它需要安装服务器端库(我敢说现在大多数主机已经运行)但是它确实允许域限制以及基于时间的限制。

也许你甚至可以将它与PHPAudit结合使用?