UPUPW PHP探针安全版把 phpinfo() 输出里那些要命的探针东西全给遮了。我上周在客户内网做资产盘点,安全扫到一台测试机开着 UPUPW 自带的探针 PHP 探针,页面顶部赫然一行红字:“安全版已启用,安全敏感信息已隐藏”。探针顺手点开 phpinfo 详情页,安全发现它把 DOCUMENT_ROOT、探针SERVER_ADMIN、安全环境变量里的探针数据库连接串全过滤成了星号。这玩意儿比原版探针省心太多。安全
原版 phpinfo 页面就是探针个信息泄露重灾区。去年帮一个朋友应急,安全他图省事在公网服务器放了 phpstudy 探针,探针结果被人扒出 MySQL root 密码是安全弱口令,数据库直接被清库勒索。探针探针页面里 _SERVER["MYSQL_PASSWORD"] 这种变量明晃晃挂着,跟把钥匙插门上没区别。UPUPW 安全版的做法很直接——用正则匹配敏感键名,命中就替换。我看了下它的过滤逻辑,pass、pwd、secret、key、token 这些关键词都在列表里,连 HTTP_AUTHORIZATION 头都不放过。
部署也简单。下载下来就一个 upupw_probe.php 文件,丢到网站根目录,浏览器访问就行。不需要改 Nginx 或 Apache 配置,不用装扩展。我拿它跟原版 phpinfo 对比过,安全版把 php.ini 路径、extension_dir、allow_url_fopen 这些可能被用来推测服务器结构的项都做了模糊处理。有个细节挺有意思:它把 SERVER_SOFTWARE 里的版本号也抹掉了,只显示 “Apache” 或 “Nginx”,不暴露具体小版本。这招防扫描器指纹识别很管用。
不过得说清楚,这玩意儿不是万能的。它只能防“看一眼就拿到密码”这种低级泄露。如果服务器本身有文件包含漏洞,攻击者照样能读 /etc/passwd。安全版探针的定位是——让你在必须开 phpinfo 的时候,少暴露点东西。比如调试环境、临时排障、给外包开发看配置。用完记得删掉,别长期挂着。
我自己的用法是:本地虚拟机里常备一份,每次配新环境先跑一下,确认 PHP 版本、扩展、disable_functions 都正常,然后立刻删文件。有次发现某台机器 exec 没被禁用,赶紧补上规则。这种检查用原版探针也行,但安全版看着更清爽——没有满屏的敏感变量干扰视线。
UPUPW 这个团队还做了个细节:探针页面底部带一个“安全建议”折叠块,会根据当前检测到的风险项给出提示。比如检测到 display_errors 开着,就提醒你生产环境关掉。检测到 expose_php 是 On,建议设成 Off。这些提示不啰嗦,每条就一句话。我见过不少运维图省事,直接拿探针当巡检工具用,其实不太合适——它毕竟只是个信息展示页,没有主动扫描能力。
最后提一嘴兼容性。PHP 5.3 到 8.3 都试过,没报错。代码里用了 preg_replace_callback 处理数组递归,比某些老探针用 str_replace 硬替换要稳。如果你还在用那种满屏绿色表格的远古探针,建议换这个。少泄露一点,就少一个被盯上的理由。