7

在将应用程序安装到客户端的服务器上时,我想确保客户端(或他们未来的开发人员等)不会复制我的应用程序并将其放置在其他域/服务器/本地服务器上。

如何验证我的应用程序是否在我安装它的服务器上运行?我不希望脚本每次运行时都有任何实质性的滞后,所以我认为“握手”方法是不合适的。

我在想脚本每次运行时都可以在我自己的服务器上请求一个 PHP 页面。这可以向我的服务器发送他们的服务器信息和域名,我的脚本可以检查接受的客户端数据库。如果请求无效,我的服务器会处理通过电子邮件向我发送详细信息的工作,以便我可以跟进。这不应该减慢客户端的脚本,因为它不需要响应,并且仍然会在他们的“无效”服务器上运行,直到我可以对此进行调查并亲自跟进。

如果这是最好的方法(或者如果有更好的方法),我应该进行什么 PHP 调用来请求我的服务器脚本?file_get_contents,curl和类似的似乎总是检索我不需要的响应。

更新

谢谢大家的回复。我完全理解 PHP 是开源的,应该可以自由编辑。我最初应该更清楚地说明,但我的意图是使用这种验证方法来帮助我发现任何违反我的许可协议的人。该应用程序受许可保护,但我也想包括此检查,以便我可以监控我的应用程序的初始滥用。

因此,仍然有人可能会违反我的许可证,并且很可能会被忽视,但如果我实施此脚本,我将拥有任何“懒惰的强盗”的优势,他们不会破坏我的应用程序并在撕掉它之前删除验证程序。

这是否证明使用这样的脚本是合理的?如果是这样,cURL 是我最好的选择吗?

4

7 回答 7

2

任何用于验证的检查代码都可以轻松替换为return true;. 查看https://stackoverflow.com/tags/php/info的常见问题解答:

问:我可以保护我的 PHP 代码免遭盗窃吗?如果是这样,怎么做?
A. 没有有效的技术解决方案来保护、编码或加密 PHP 源代码。有许多产品可以提供一定程度的保护,但都可以通过时间和精力来破解。您最好的选择不是技术解决方案,而是许可协议形式的法律解决方案。

于 2010-09-22T22:07:58.103 回答
1

您获得法律协议并起诉所有人。

于 2010-09-22T22:13:32.353 回答
1

SaaS 是您的朋友。将应用程序托管在您自己的安全服务器上,并为您的客户访问它收取许可费。

于 2010-09-22T22:16:33.110 回答
0

imo 值得查看一些执行此操作的 joomla 扩展。有一些不同的实现,一些在执行之前检查域并验证它,大多数是加密的,以及域验证。我记得 sakic 的 url sef 扩展曾经这样做过。还有很多商业扩展使用相同的东西。除此之外,我想不出另一种方式。可能另一个好主意是拥有一个好的许可证和一个好的律师....

于 2010-09-22T22:07:22.640 回答
0

简短的回答:这是做不到的。

长答案:无论您在代码中添加什么保护,任何具有 PHP 经验的人都可以轻松删除它。即使代码是用 ionCube 或 Zend Guard 之类的东西编码的,也可以相对容易地解码。

您唯一的选择是通过积极追查版权侵权者来保护您的知识产权。即使这也不是万无一失的,因为我们来自 RIAA 和 MPAA 的人非常了解。在这个时代,我想说这不是一个可以解决的问题。

于 2010-09-22T22:09:11.170 回答
0

您可以将电话回家行为集成到您的软件中,但您可能应该咨询律师以讨论有关隐私问题,并为您的客户的使用许可制定隐私准则和使用条款。

需要注意的一件事是您发送的数据(以及您发送它的方式,即是否安全加密)以识别非法使用您的产品的客户,因为它可能被用来破坏您客户的基础设施或用于监视你的客户。

关于您的 phone-home 功能,请注意客户端可以定位并删除它,因此使用 PHP 混淆器或编译器可能会提供一些额外的保护(尽管任何足够坚定的 PHP 开发人员可能会禁用此功能)。请注意,您的保护只会起到威慑作用,旨在使规避成本接近或超过合法使用的成本。

编辑:
正如poke在问题评论中所写,您可以将部分代码移到安装在客户端站点上的软件之外的服务器上,但是当您的服务器由于某种原因(例如,为了维护)而无法访问时,这可能会适得其反。

最后,我认为客户满意度应该比保护您的软件免受客户影响更重要,即尽量避免可能使您的客户生气的保护措施。

于 2010-09-22T22:14:17.063 回答
-2

您可以对其进行编码并硬编码一个许可文件,以使其仅在它打算用于的域上工作(例如,使用 ioncube 或 zend 对一个文件进行编码,以检查 HTTP HOST 是否是预期的域而无需握手)。然后,您可以使所有其他文件都需要该文件(如果所有文件都已编码)。

于 2010-09-22T22:06:04.333 回答