Maj*_*our 9 php apache debugging legacy-code
我试图在一些遗留代码中跟踪执行流程.我们正在访问一份报告
http://site.com/?nq=showreport&action=view
Run Code Online (Sandbox Code Playgroud)
这就是谜题:
index.php没有$_GET['nq']或$_GET['action'](也没有
$_REQUEST),index.php或其包含的任何来源,不包括showreport.php,.htaccess没有网址重写然而,showreport.php被执行.
我可以访问服务器上的cPanel(但没有apache配置文件),这是实时代码,我不能随意使用.
有什么可以让这种情况发生?我应该在哪里看?
更新
有趣的事情 - 在状态更新中向客户端发送此问题的链接以使他保持循环; 几分钟后,所有访问权被撤销,客户通知我项目被取消.我相信我已经采取了足够的谨慎措施,不要在代码实际存在的地方留下任何痕迹......
我感到宽慰,现在已经取消了我,但我也很想知道它是什么!
谢谢大家的时间和帮助.
解析URL有"数百种"方法 - 在各种层(系统,httpd服务器,CGI脚本)中.因此,不可能专门用您提供的信息回答您的问题.
你留下了一个非常明显的提示"遗留代码".我假设你的意思是,你不想完全阅读代码,理解它甚至可以找到解析该参数的有问题的应用程序.
不过,如果你留下一些提示,那就是代码的"遗产":Age,PHP版本等等.这可以提供帮助.
它并不总是$_GET被用来访问这些值(同样如此$_REQUEST,它们是表兄弟).
我们来看看PHP 3手册镜像:
HTTP_GET_VARS
通过HTTP GET方法传递给当前脚本的关联变量数组.
脚本是否正在使用此数组?这只是一个猜测,这是一个有效的方法来访问这些参数很长一段时间.
无论如何,这绝不是你搜索的内容.在PHP中,这经常被误解和误用(字面上被滥用)称为寄存器全局 PHP手册.所以你可能只是在寻找$nq.
接下来,总是有请求uri和apache/environment/cgi变量.请参阅上面的PHP 3手册链接,其中列出了许多内容.将其与当前手册进行比较,以获得广泛的理解.
在任何情况下,您都grep可以使用多文件搜索(如果需要检查某些IDE中的遗留代码,Eclipse可以在一个文件中使用.)
所以在这一天结束时,你可能只是寻找一个串像nq,'nq',"nq"或$nq.然后检查这个搜索带来了什么.基于字符串的搜索是您完全不知道的代码库的良好入口.