服务公告
网站目录遍历攻击:原理与配置层防御
发布时间:2026-10-22 17:37
目录遍历与目录列举是两个常被混淆的概念,防御配置也分两层:Web 服务器层与应用代码层。把原理与两层配置讲清,这类攻击的门槛就堵住了。 ## 两类问题的区分 目录列举是服务器把目录内容当列表展示:访问一个没有默认首页的路径,服务器返回该目录下所有文件,敏感文件一览无余。目录穿越则是路径构造攻击:请求里插入特殊的路径片段,试图越出网站根目录,读取系统文件或应用配置。前者是配置疏漏,后者是程序漏洞,防御位置也不同。 ## 背后的原理 目录列举的成因是索引功能默认开启且目录缺少默认文档,Web 服务器好心地把目录当页面渲染。穿越攻击的成因是程序把用户输入直接拼进文件路径,特殊构造的片段让路径解析跳出了预期范围,配合服务器进程的读取权限,系统敏感文件就可能被拖出。两者都依赖一个共同前提:服务进程对不该暴露的文件有读取权限,这提示了权限收窄作为兜底层的价值。 ## 最小实操 Nginx 层的防御:确认目录索引处于关闭状态,站点配置里显式声明索引指令为关闭;对上传目录与静态资源目录,直接拒绝脚本解析,避免上传物被执行。代码层的防御:所有文件路径拼接前,先解析真实路径并校验仍在允许目录内;文件名不接受用户原始输入,用白名单与随机重命名处理;模板与配置文件的读取范围锁定在应用目录。 ## 常见错误 关了索引就以为安全,穿越攻击与索引无关,代码层不过关照样被打;上传目录允许执行脚本,等于给攻击者递了执行入口;服务进程用高权限账号运行,穿越一旦成功读到的就是高价值文件。顺云控制台的防火墙规则可以在网络层再收一刀,但配置与代码这两层才是主战场,上线前用目录列举与路径构造两类手法各做一轮自查,成本极低。下一篇: 中小服务商的生存空间:差异化与本地化服务