我希望保护用PHP编写的软件。PHP的本质是它是以纯文本的形式交付的,因此不能由它本身来保护。我不想在服务器上安装lib,比如ZendGuard、IonCube或SourceGuardian。我希望个人应该使用软件,但不应该干扰应用程序的受保护部分(许可,敏感部分)。该软件作为试用软件分发给客户。
用分组密码(AES)加密有效载荷,并将密钥存储在远程系统上。对于软件,需要密钥来解密有效载荷。软件的模糊部分应该通过SSL通过cURL与密钥服务器联系,并请求解密密钥。解密密钥只应发送回持有试用许可证的服务器IP。文件的校验和也可以与密钥请求一起发布,如果它甚至失败一次,密钥服务器可能会拒绝永远提供解密密钥,这将有望防止篡改。
谢谢!
发布于 2014-11-21 09:36:44
让我们看看。一旦您的密钥服务器发送解密密钥,黑客就可以监视网络活动来检索密钥并使用它解密源代码。从现在起,他可以用它做任何他想做的事,特别是:
另一方面,您的产品的某些合法用户可能更喜欢使用您的竞争对手的产品,因为:
如果您确实发明了应该受保护的东西(很可能,你还没有),那么保护它的唯一方法就是将敏感代码移动到您自己的服务器上,然后提供一个从外部访问功能的API。一旦给出了代码,无论它受到多好的保护,它都可以被解密;否则,就不可能运行它。
如果唯一的目标是拥有一个试用版,那么只需在您自己的服务器上托管它。潜在客户将能够尝试,如果他们有兴趣,购买该产品。当然,为了说服系统管理员,您还应该提供关于应用程序的部署和托管方式的非常详细的信息。
稍后,当您的产品成功时,您可以考虑通过提供:
有了这个模型(被许多初创公司使用),源代码的加密就变得几乎无关紧要了。大公司不会尝试从P2P网络下载您的产品,因为所有的遵从性政策都会阻止他们使用未经许可的产品。
发布于 2014-11-21 10:02:52
你在对MainMa回答的评论上写道:
我想了几天的简单试用期,在购买完成后,交付解密版本。主要目标是在不交付源的情况下交付产品(一开始),这样用户就可以看到他是否喜欢该产品(或者它是否有用)。
这正好把你的问题变成了XY问题。换句话说,你是在寻求解决一个问题,而不是问你想要解决的问题,而是询问你提出的解决方案。(如果建议的解决方案实际上是好的,并且您只需要把一些次要的细节弄清楚就可以了。)
如果以上是您这样做的原因,那么就不要混淆源代码了。它将增加巨大的复杂性和风险,与正如MainMa所解释的,许多缺点,没有真正的,实际的优势,任何人。
相反,寄存一份你自己的副本,潜在的客户可以登录并试用。每午夜还原一个空白数据库或类似的内容,向任何用户表明他们输入的任何和所有数据都是可公开访问的,并将被删除,并显着地发布到它的链接以及登录到演示的用户名和密码。
如果数据需要保存一段相当长的时间,用户才能确定应用程序是否适合他们的需要(这听起来不像是基于您几天的讨论),那么可以为潜在客户提供在您的服务器上设置一个试用安装的能力,在经过一些合理、短的时间后自动删除。
此外,此解决方案将使用户能够在升级之前轻松地评估升级是否为他们提供了额外的价值。如果升级在任何方面都是破坏性的,或者降级是不平凡的,那么这本身就是一种优势。
所有这些都需要额外的web托管、cron作业和存储数据库快照和/或默认数据库内容的一些额外副本的成本。
https://softwareengineering.stackexchange.com/questions/263399
复制相似问题