xampp默认文档是高危攻击入口,因未鉴权暴露phpinfo.php等敏感文件,须彻底删除dashboard、xampp、webalizer及phpmyadmin/licenses等目录,并在httpd-xampp.conf中将对应directory的require local改为require all denied,重启apache生效。

为什么XAMPP默认文档会成为攻击入口
访问 http://localhost/dashboard/ 时看到的“XAMPP for Windows”首页、phpinfo.php、testmysql.php、licenses/ 目录,不是“开发便利”,而是未经鉴权的资产暴露点。扫描工具一扫就出“敏感文件泄露”告警,渗透人员能直接拿到 PHP 版本、MySQL 连接方式、Apache 模块列表、甚至 OpenSSL 编译参数——这些全是 CVE 匹配的原始输入。
删掉哪些文件和目录才真正有效
别只删 dashboard/ 页面——它只是表象。关键要清理物理路径下的三类内容:
-
XAMPP\htdocs\dashboard\整个目录(含index.php、phpinfo.php、testmysql.php) -
XAMPP\htdocs\xampp\目录(XAMPP 自带的说明页、许可证、组件介绍) -
XAMPP\htdocs\webalizer\和XAMPP\htdocs\phpmyadmin\licenses\(后者常被忽略,但含完整软件授权文本,暴露组件版本)
注意:phpmyadmin/ 主目录不能删,但它的 licenses/ 子目录必须清空;htdocs/ 下若存在 test/、examples/、install/ 等通用测试名目录,也一律删除。
配置层面禁止访问残留路径
删完文件不等于安全。万一某天手误又放回一个 phpinfo.php,或者第三方包自带 info.php,就得靠 Apache 层拦截:
XAMPP 8.0.30 是一款免费、开源的跨平台 Web 服务器集成包,专为快速搭建本地 PHP 开发环境而设计。该版本核心组件包括:Apache 2.4.56、MySQL 8.0.33、PHP 8.0.30、phpMyAdmin 5.2.1 等。它支持 Windows、Linux 和 macOS 系统,可让开发者在个人电脑上轻松模拟服务器环境,无需复杂配置即可运行 WordPress、Thin
- 在
XAMPP\apache\conf\extra\httpd-xampp.conf中,找到所有类似<directory></directory>的块 - 把对应块内的
Require local改成Require all denied(XAMPP 8.0+ 默认已设,但老版本或手动改过配置的容易漏) - 特别检查
Alias /security对应的路径是否仍可从浏览器访问——如果没走http://localhost/security/xamppsecurity.php做认证就开放了,立刻注释掉整段Alias和<directory></directory>
改完必须重启 Apache(不是重载),否则配置不生效。
为什么不能只依赖 .htaccess 屏蔽
.htaccess 在 XAMPP 中默认是启用的,但它有硬伤:
- 仅对当前目录及子目录生效,无法覆盖
Alias映射路径(比如/phpmyadmin是通过 Alias 指向物理路径的,.htaccess 放在 htdocs 里管不到) - 一旦
AllowOverride None(常见于性能优化配置),.htaccess 完全失效 - Windows 下 NTFS 权限或杀毒软件可能干扰文件读取,导致规则静默失败
所以核心路径屏蔽必须写死在主配置或 httpd-xampp.conf 里,.htaccess 只适合做项目级补充,比如禁止访问 wp-config.php 这类 CMS 配置文件。
最易被忽略的是:删完文件后没清浏览器缓存或 CDN 缓存(本地开发虽无 CDN,但某些代理工具如 Fiddler、Charles 会缓存响应),导致你以为删了,实际请求还在返回旧内容。验证时务必用 curl -I http://localhost/xampp/index.php 看 HTTP 状态码,404 才算真正移除。










