严重程度:严重配置错误
暴露的 .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 会自动检查这一点。