直接禁用Indexes是阻止Apache目录遍历最核心有效的措施,需在httpd.conf及httpd-xampp.conf等所有块中移除或显式禁用Indexes,并重启服务;同时设AllowOverride None、清理暴露路径、隐藏版本号、设置MySQL root密码。

直接禁用 Indexes 就能阻止 Apache 自动列出目录内容,这是最核心、最有效的一步。其他配置(如隐藏版本号、删减暴露路径)属于加固补充,不解决目录遍历本身。
修改 httpd.conf 中的 Options 指令
Apache 默认启用 Indexes,导致访问空首页(如 /uploads/)时直接展示文件列表。必须在对应 <directory></directory> 块中移除或显式禁用它。
- 打开
C:\xampp\apache\conf\httpd.conf,搜索<directory></directory> - 找到类似这行:
Options Indexes FollowSymLinks Includes ExecCGI - 改成:
Options FollowSymLinks Includes ExecCGI(删掉Indexes)
或更稳妥写法:Options -Indexes +FollowSymLinks +Includes +ExecCGI(显式禁用 + 显式启用) - 如果还存在其他
<directory></directory>块(比如针对/xampp/根目录或/security/),同样检查并处理Indexes - 保存后必须重启 Apache,否则不生效
验证是否真的禁止了目录遍历
改完不能只信配置,得用浏览器实测。关键看返回状态码和响应体,不是“看起来没列表”就等于安全。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 访问一个明确存在的空目录,例如
http://localhost/uploads/(确保该目录存在且无index.html) - 正确结果是 HTTP 403 Forbidden,页面显示
Forbidden You don't have permission to access /uploads/ on this server. - 如果返回 200 并列出文件名,说明
Indexes还在生效——可能改错了位置(比如改了全局<directory></directory>却漏了htdocs块),或没重启服务 - 注意:某些 XAMPP 版本会在
httpd-xampp.conf里覆盖htdocs配置,务必一并检查该文件
避免因 AllowOverride 导致 .htaccess 绕过限制
.htaccess 文件若被允许覆盖主配置,就可能重新启用 Indexes,让前面的修改白费。
- 在同一个
<directory></directory>块中,确认AllowOverride的值 - 如果业务不需要运行时动态重写规则,设为:
AllowOverride None - 如果必须支持
.htaccess(如 Laravel 项目),至少确保其内容不含Options +Indexes或类似指令 - 检查项目根目录下是否存在
.htaccess,用文本编辑器打开看有没有偷偷加回Indexes
额外但必要的安全收尾动作
禁用目录遍历只是基础,XAMPP 默认暴露大量调试/管理路径,不清理会抵消前面所有努力。
- 访问
http://localhost/security/,运行 XAMPP 自带的安全检查页,它会标出phpmyadmin、webalizer、xampp等未保护路径 - 编辑
C:\xampp\apache\conf\extra\httpd-xampp.conf,注释或删除所有以Alias /xampp、Alias /security、Alias /phpmyadmin开头的段落 - 顺手隐藏 Apache 版本号:在
httpd-default.conf中设ServerTokens Prod和ServerSignature Off - 不要忽略 MySQL root 密码 ——
http://localhost/security/xamppsecurity.php是唯一官方入口,明文密码文件(xampp\security\htdocs\xampp\security\passwd.txt)务必删掉
最容易被忽略的是多配置文件叠加影响:XAMPP 启动时会加载 httpd.conf、httpd-xampp.conf、httpd-vhosts.conf,而 httpd-xampp.conf 里常有独立的 <directory></directory> 块,专门放开 /xampp/ 下的目录浏览。不查这个,改了十次 httpd.conf 都没用。

















