php在默认的情况下打开错误回显,这样可以便于程序员在调试脚本时发现代码的错误,但是这也往往使web暴露了php的代码和服务器的一些数据。php对代码的规范性要求比较严格,以下是一种比较常见的错误回显: warning:file("data/1120/'.htm)-no such file or directory in /usr/home/xxxxx.com/show.php on line 300 这种错误回显,至少告诉了我们三个信息:服务器的操作系统是linux;服务器使用文本数据库;show.php的第300行代码为"file ("./data/1120/".$data.".htm")"。 这种错误回显,已经足以成为一台服务器致命的漏洞。从另一个利用的角度来看,我们发现一般的php错误回都包含了"warning"字符,但是这有什么用呢?我们得先认识一下php的库文件。 php的include()和require()主要是为了支持代码库,因为我们一般是把一些经常使用的函数放到一个独立的文件中,这个独立的文件就是代码库,当需要使用其中的函数时,我们只要把这个代码库包含到当前的文件中就可以了。 最初,人们开发和发布php程序的时候,为了区别代码库和主程序代码,一般是为代码库文件设置一个".inc"的扩展名,但是他们很快发现这是一个错误,因为这样的文件无法被php解释器正确解析为php代码。如果我们直接请求服务器上的这种文件时,我们就会得到该文件的源代码,这是因为当把php作为apache的模块使用时,php解释器是根据文件的扩展名来决定是否解析为php代码的。扩展名是站点管理员指定的,一般是".php", ".php3"和".php4"。如果重要的配置数据被包含在没有合适的扩展名的php文件中,那么远程攻击者将容易得到这些信息。 按照以往的程序员的习惯,往往会把一些重要的文件设定"config.inc","coon.inc"等形式,如果我们在搜索引撃中搜索"warning+config.inc",那么你会发现许多网站都暴露了".inc"文件的代码,甚至包括许多商业和政府网站。