暴露的 .env 文件:攻击者如何找到你的密钥
一个 .env 文件里存放着数据库密码、API key 和签名密钥。如果它能通过网络访问到——在 /.env、/.env.production,或像 /.env.backup 这样的备份路径——任何人都能下载它并接管你的服务。
这是什么
环境文件本应留在服务器上,绝不提供给客户端。配置错误的静态文件处理器、遗留在 web root 里的副本,或会提供 dotfile 的框架,都可能把它们暴露出去。
攻击者不靠猜——他们持续运行自动化扫描,对数百万主机请求 /.env 及数十种变体。一个可访问的文件在几小时内就会被找到。
为什么重要
这些文件里通常含有生产环境数据库 URL、Stripe secret key、JWT 签名密钥和云凭据。一次泄露就可能意味着数据被全部窃取、被欺诈扣款,以及账户被接管。
由于这些密钥在轮换前一直有效,即便文件已被移除,只要你不轮换其中的所有内容,损害仍会持续很久。
如何修复
在你的 Web 服务器或代理配置中,拒绝对 .env 和其他 dotfile 的访问。
location ~ /\.(?!well-known).* {
deny all;
return 404;
}把配置存放在服务器静态提供的任何目录之外,并确保你的构建不会把 .env 文件复制到发布产物中。
如果某个文件曾经可被访问,就把其中的每个密钥都视为已泄露,立即轮换数据库密码、API key 和 token。
常见问题
我已经删掉文件了——安全了吗?
在你轮换密钥之前还不安全。任何下载过它的人,在你更改凭据之前仍持有有效凭据。
我怎么知道自己的有没有暴露?
在浏览器中请求 https://yourdomain.com/.env。如果你看到的是 KEY=value 这样的行而不是 404,那就是暴露了。AppSafe 会自动检查这一点。
博客文章
冒充 AI 爬虫的机器人正在搜寻你的 .env 文件:教你自查
凭证扫描器借用 AI 爬虫的名字绕过白名单,而它们专找一个文件:你的 .env。如何检查它能否被访问,以及如何把它锁好。
Railway 遭入侵:如何在不停机的情况下轮换应用密钥
攻击者盯上了 AI 和平台的 API 密钥,Railway 随即要求所有用户轮换环境变量。如何评估你的暴露程度、在不让应用宕机的前提下轮换全部密钥,并让下一次泄露的伤害更小。
PHP2Shell 正被利用:如何检查你的应用是否暴露
PHP 本身的两个严重漏洞在短短几天内就从“补丁已发布”变成了“已被在野利用”。如何查明你托管的任何东西是否运行受影响的版本,以及今天该怎么做。
要上线用 AI 做的应用了?发布前先检查这 7 件事
AI 编程工具追求的是「能跑」,而不是「能安全上线」。这是我们在任何刚上线的应用上最先检查的七个问题——以及每一个的修复方法。