如何验证PHP应用程序的用户?

时间:2010-09-22 22:00:35

标签: php security scripting external data-protection

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

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

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

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

更新

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

因此,有些人可能仍会违反我的许可证,很可能会被忽视,但如果我实施这个脚本,我就会有任何“懒惰强盗”的优势,他们不会拆分我的应用程序并在翻录之前删除验证程序

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

7 个答案:

答案 0 :(得分:2)

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

  

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

简短回答:无法做到这一点。

答案很长:无论您在代码中添加了什么样的保护,任何具有PHP经验的人都可以轻松删除它。即使代码使用像ionCube或Zend Guard这样的代码进行编码,也可以相对轻松地对其进行解码。

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

答案 5 :(得分:0)

您可以将手机家庭行为整合到您的软件中,但您应该咨询律师,讨论有关此问题的隐私问题,并制定隐私准则和客户使用许可使用条款。

要注意的一件事是您发送的数据(以及您发送的数据,即是否安全加密),以识别非法使用您产品的客户,因为它可能会用于危害客户的基础架构或暗中监视你的客户。

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

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

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

答案 6 :(得分:-2)

您可以对其进行编码并对许可证文件进行硬编码,以使其仅在其预期的域上工作(例如,使用ioncube或zend对文件进行编码,以检查HTTP HOST是否为目标域而不执行握手)。然后,您可以在所有其他文件中创建该文件(如果所有内容都已编码)。