全部指南
严重程度:严重配置错误

暴露的 .env 文件:攻击者如何找到你的密钥

一个 .env 文件里存放着数据库密码、API key 和签名密钥。如果它能通过网络访问到——在 /.env、/.env.production,或像 /.env.backup 这样的备份路径——任何人都能下载它并接管你的服务。

这是什么

环境文件本应留在服务器上,绝不提供给客户端。配置错误的静态文件处理器、遗留在 web root 里的副本,或会提供 dotfile 的框架,都可能把它们暴露出去。

攻击者不靠猜——他们持续运行自动化扫描,对数百万主机请求 /.env 及数十种变体。一个可访问的文件在几小时内就会被找到。

为什么重要

这些文件里通常含有生产环境数据库 URL、Stripe secret key、JWT 签名密钥和云凭据。一次泄露就可能意味着数据被全部窃取、被欺诈扣款,以及账户被接管。

由于这些密钥在轮换前一直有效,即便文件已被移除,只要你不轮换其中的所有内容,损害仍会持续很久。

如何修复

在服务器层面阻止 dotfile

在你的 Web 服务器或代理配置中,拒绝对 .env 和其他 dotfile 的访问。

location ~ /\.(?!well-known).* {
  deny all;
  return 404;
}
让 env 文件远离 web root

把配置存放在服务器静态提供的任何目录之外,并确保你的构建不会把 .env 文件复制到发布产物中。

轮换所有曾被暴露的内容

如果某个文件曾经可被访问,就把其中的每个密钥都视为已泄露,立即轮换数据库密码、API key 和 token。

常见问题

我已经删掉文件了——安全了吗?

在你轮换密钥之前还不安全。任何下载过它的人,在你更改凭据之前仍持有有效凭据。

我怎么知道自己的有没有暴露?

在浏览器中请求 https://yourdomain.com/.env。如果你看到的是 KEY=value 这样的行而不是 404,那就是暴露了。AppSafe 会自动检查这一点。

你的应用受影响了吗?

AppSafe 一次免费扫描,就能检查这个问题以及数十项其他问题。

免费扫描我的应用