我最近询问了一个关于使用readfile()来远程执行PHP的问题,但是我可能最好先解决问题,看看我是否在考虑错误的方法,所以这里有:< / p>
我原本想过从客户端服务器到我的调用include(),至少保持变量范围不变,但许多站点(和PHP文档)似乎建议使用readfile(),file_get_contents()或类似。理想情况下,我希望在客户端的服务器上为我服务器上的每个“真实”文件提供一个简单的包装器文件。
关于如何实现我的需求的任何建议?
谢谢, ColmF
答案 0 :(得分:6)
正如所建议的那样,评论发布为答案&amp;修改了一下
PHP是一种解释性语言,因此“读取”文件并解析它们。是的,它可以在某些情况下存储缓存的字节代码,但它不像在字节码中编译和工作的更高级语言。这意味着php'编译器'需要您的实际源代码才能工作。查看zend.com/en/products/guard可能会做你想要的,但我相信这意味着你的客户必须使用Zend Server。
未能与公司签订合同,其中包括不重复使用您的代码等的条款。在这种情况下,这是您最好的保护。你也应该小心,如果你在“开源”许可下使用任何东西,你的整个应用程序可能被认为是开源的,因此这一切都没有实际意义。
对于许多公司而言,这不是一种非标准做法。我制作了我特别自豪的软件,公司想要使用它。由于他们因“个人”原因而相信自己的信息安全,或者因为他们必须遵守PCI等标准,因此我的应用程序必须在其环境中运行。我提供的产品是“网络服务”,他们用数据查询我的服务器并收到回复。在这种情况下,我的源被完全保护,因为这与任何其他封闭的API没有什么不同。在每种情况下,我都已将该副本许可给客户,并规定不得修改或分发该副本。这是一份具有法律约束力的合同,完全可以从客户方面预期。当然有条款我会提供支持等等,但这既不在这里也不在那里。
简答:
答案 1 :(得分:4)
如果他们希望它完全包含在他们的服务器上,那么最好的选择是合法的解决方案,而不是技术解决方案。
您向他们许可软件,并确保合同规定知识产权属于您,未经事先许可不得复制/分发(显然您需要一些比这更好的法律术语,但您明白了)。
答案 2 :(得分:3)
我建议您使用PHP源保护系统,例如Zend Guard,ionCube或sourceguardian,而不是远程执行。
答案 3 :(得分:1)
我认为你将会遇到困难,除非你想要某种有趣的包装器,它会向你的服务器输入curl
类型的请求。特别是在处理会话和cookie等事情时。
你确定PHP obfuscator对你正在做的事情不够吗?
答案 4 :(得分:1)
基本上,您正在寻找一种方法将您的应用程序代理到远程服务器(即:您的客户)。在客户端的网站上使用readfile()
之类的东西很好,但是你仍然需要多个脚本。基本上,readfile
会擦除特定文件路径或URL上的可用内容,并将其传递给最终用户。因此,如果我要readfile('google.com')
,它会输出Google主页的源代码。
假设您不仅希望在客户的网站上添加虚拟表单,那么您需要在其结尾处放置一些代码。代码将不得不拦截表单提交(因此您需要使用readfile
抓取的页面上的URL参数告诉您的代码表单提交URL是您客户的网站而不是您自己的网站)。 此页面(表单提交处理程序页面)需要回调您自己的网站。想想这样的事情:
readfile("https://your.site/whatever?{$_SERVER['QUERY_STRING']}");
然后,您的网站将处理回复,然后将所有内容传回客户的网站。
希望我能让你走上正确的道路。如果我不清楚,请告诉我。我意识到这是很多信息。
答案 5 :(得分:0)
不是自己托管,为什么不做大多数php应用程序所做的事情,只是通过自动更新功能将程序分发给您的客户端?自己托管它很复杂,从网站管理到支付托管费用。
如果您不希望分发它,请找到允许您执行此操作的预先编写的许可证。如果你找不到,那么就该和律师谈谈了。
答案 6 :(得分:0)
你无法阻止他们看到你的代码。你可以让他们很难理解你的代码,这是第二好的。请参阅SD PHP Obfuscator。