首页/安全/漏洞与攻击面速查/敏感文件与备份文件泄露
Web 漏洞原理与防护55 条

敏感文件与备份文件泄露

部署残留会把配置文件、版本库目录、备份与编辑器临时文件暴露在 Web 根目录下(.env、.git/、备份压缩包、.bak 文件等);防护是发布流程裁剪加服务器规则拦截加定期自查。

漏洞与攻击面速查安全更新于 2026-10-13

敏感文件泄露是什么

部署残留会把配置文件、版本库目录、备份与编辑器临时文件暴露在 Web 根目录下:.env 里有数据库口令与接口密钥,版本库目录里有完整源码与提交历史,编辑器临时文件里有源码片段,打包文件里更是全量数据。这类问题的特点是「文件名可猜」——攻击者按常见命名逐个尝试即可命中,不需要复杂技术。治理要覆盖部署全流程:构建阶段排除、发布后自动扫描、访问层拒绝规则兜底,三条同时做才算稳妥。

基本信息

常见文件.env 与配置副本、版本库目录、备份压缩包、编辑器临时文件
常见来源手工部署残留、构建打包未排除、编辑站点产生的副本
直接危害凭据泄露、源码泄露、全量数据可下载
治理顺序构建排除、发布后扫描、访问层拒绝兜底
覆盖范围站点目录、子目录、多站点与其他运行环境
验证方式对自身站点做敏感路径自查并核对访问日志

典型场景

  • 手工部署时把整个项目目录上传,包含本地配置与版本库
  • 构建产物里带有源码映射文件,可还原前端源码
  • 编辑线上文件产生的临时文件与副本未清理
  • 多站点共用服务器,某个站点目录下残留备份文件
  • 容器镜像把配置文件直接打进可公开服务的目录
  • 历史遗留站点长期无人维护,残留文件多年未清理

常见泄露文件名

常见泄露文件名
.env / .env.bak / config.php.old
.git/config / .svn/entries
www.zip / web.tar.gz / backup.sql
index.php~ / .index.php.swp
.DS_Store / Thumbs.db
# 命名有规律可循:备份类多带日期或 old/bak 后缀,编辑器临时文件多为波浪号或 swp 结尾

Nginx 拦截示例

Nginx 拦截示例
location ~ /\.(git|svn|env|DS_Store) { deny all; }
location ~* \.(bak|old|swp|sql|zip|tar\.gz)$ { deny all; }
# 规则要覆盖常见变体,并按需补充业务特有后缀
# 访问层拒绝只作兜底,核心是把文件挡在 Web 目录之外

治理环节与动作

环节动作作用
构建排除配置、版本库与临时文件从源头不产生残留
发布自动化扫描产物文件名发现遗漏并按门禁拦截
运行访问层拒绝规则兜底拦截常见敏感路径
运维定期自查与日志核对发现历史遗留与被访问迹象
打包发布前对构建产物做一次文件名扫描;上线后定期对自身站点做敏感路径自查。
确认敏感文件曾可访问后,应按泄露处理:轮换其中的口令与密钥,核查访问日志判断是否被下载,而不只是删除文件。

易错点

  • 只靠服务器 deny 规则兜底:新类型备份文件不断出现,应从构建与发布流程杜绝写入 Web 目录
  • 只查根目录不查子目录:多层级目录结构里更容易藏残留文件
  • 删除文件就结案:已暴露的凭据需要轮换,日志也要核查是否被下载
  • 只扫当前站点:同服务器上的其他站点与其他环境同样需要检查
  • 忽略构建产物中的映射文件:前端源码可被还原,暴露内部逻辑与接口结构
  • 不做发布后扫描:人工检查容易漏项,应固化为流水线中的自动检查

数据来源与参考

  • OWASP WSTG 信息泄露相关章节
  • Nginx 官方文档(location 匹配优先级)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌