把网站挪到新服务器,第一件事往往是传个 phpinfo 文件上去看环境。文件名随手起成 info.php,测完就忘了删。等到某天收到主机商提醒,说服务器信息能被搜索引擎查到,才发现这个文件还躺在根目录。

一页 phpinfo 能暴露多少东西

PHP 版本、编译参数、php.ini 的绝对路径、装了哪些扩展、环境变量、请求头,全摊在一页上。数据库密码如果写在环境变量里,也可能被一起带出来。单条信息看着无害,凑在一起足够让人判断该拿哪个版本的漏洞来试。

改配置不如直接删文件

php.ini 里把 expose_php 设成 Off,只是响应头里不再出现 X-Powered-By,页面照样打得开。真正的处理是删掉文件。如果暂时要留着排查,加一层来源判断,只让本机访问:

<?php if ($_SERVER['REMOTE_ADDR'] !== '127.0.0.1') { http_response_code(404); exit; } phpinfo();

面板和备份目录里的同类文件

装过宝塔这类面板的机器,根目录经常留着探针,文件名五花八门,tz.php、i.php、test.php 都见过。面板的安全检测会标红,可提示弹一次就被关掉了。上传目录、备份目录里的整站压缩包更麻烦,等于把源码和配置一起送人。

已经被人扫过怎么办

先删文件,再翻访问日志,搜这个路径有没有外部请求。被扫到不等于被利用,但如果 PHP 版本还停在很老的 5.x,升级这件事该排进日程。顺手关掉目录列表,nginx 去掉 autoindex,Apache 去掉 Indexes 选项,至少别人没法一眼看完你的目录结构。

顺带查一下有没有别的入口:phpmyadmin 目录、导出的 sql 文件、编辑器留下的 .php.swp。这些东西和 info.php 一样,平时不显眼,被人翻出来才知道麻烦。扫描器每天都在扫这些固定路径,日志里那一片 404 就是痕迹。

判断标准很简单:只要有一个能执行 phpinfo 的文件对外可达,就等于把家底贴在了门上。测试用的东西,测完当天删,别指望下次还记得。