xampp默认启用所有http方法及webdav模块,存在安全风险;应全局设置traceenable off、在各块中配置 require all denied,并注释mod_dav.so与mod_dav_fs.so两行以彻底禁用webdav。

XAMPP默认开启所有标准HTTP方法(包括 PUT、DELETE、TRACE、OPTIONS),这在本地开发环境看似无害,但一旦误配或暴露到公网(比如用作临时演示、内网共享、或被扫描工具识别),就可能成为攻击入口——尤其当WebDAV模块启用时,PUT/DELETE 可直接上传/删文件。
禁用 TRACE 和 OPTIONS 方法最简单有效的方式
Apache 2.4+ 提供了内置指令 TraceEnable,无需重写规则或加载额外模块:
-
TraceEnable off必须写在全局配置(如httpd.conf)顶层,不能放在<directory></directory>或<virtualhost></virtualhost>内,否则无效 -
OPTIONS无法用RewriteCond %{REQUEST_METHOD}安全拦截(因为预检请求可能绕过规则),应优先用LimitExcept - 在
<directory></directory>块中添加:<limitexcept get post head> Require all denied </limitexcept>注意:Apache 2.4 使用Require语法,不是旧版的Order/Deny
彻底关闭 WebDAV 模块(XAMPP 默认启用)
XAMPP 安装包里 mod_dav.so 和 mod_dav_fs.so 是默认加载的,哪怕你没显式配置 WebDAV,模块本身就会响应 PROPFIND、MKCOL 等方法。不关掉,LimitExcept 也拦不住这些方法:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 打开
/opt/lampp/etc/httpd.conf(Linux/macOS)或\xampp\apache\conf\httpd.conf(Windows) - 搜索并注释这两行:
#LoadModule dav_module modules/mod_dav.so #LoadModule dav_fs_module modules/mod_dav_fs.so
- 顺手检查是否还有
<ifmodule dav_module></ifmodule>块,有就整段注释掉 - 重启 Apache(XAMPP 控制面板点 restart)后,再发
curl -X PROPFIND http://localhost/应返回 501 Not Implemented
验证是否生效的关键检查点
改完配置别急着关终端,用几条命令快速确认效果:
- 查响应头是否暴露方法:
curl -I http://localhost/→ 响应中不应再出现Allow: GET,HEAD,POST,PUT,DELETE,OPTIONS,TRACE,理想是只含GET, HEAD, POST - 手动触发禁用方法:
curl -X DELETE http://localhost/应返回 405 Method Not Allowed(不是 403);curl -X TRACE http://localhost/应返回 403 或 501 - 检查 WebDAV 是否真关闭:
curl -X PROPFIND http://localhost/返回非 207 Multi-Status 即成功 - 注意:浏览器地址栏访问不会触发
PUT/DELETE,必须用curl或 Postman 显式指定方法
最容易被忽略的是:XAMPP 的 httpd.conf 里常有多处 <directory></directory> 块(比如针对 /opt/lampp/phpmyadmin 或 /security),每处都得单独加 LimitExcept,否则 phpMyAdmin 这类子目录仍可能暴露危险方法。










