跳到正文
>_ITDITDWeb 安全平台

安全指南

安全超入门:.env 和 API key 到底危险在哪、又该怎么守

「都说安全很重要,可到底先从哪儿下手?」这是写给个人开发者的第一步。.env 是什么、API key 泄露后会发生什么(附盗刷流程图解),以及从今天就能动手的 4 个最基本的防护办法,把专业术语掰开揉碎,按顺序讲清楚。不吓唬人,只让你能动手。

发布于 2026-06-07 更新于 2026-06-07 2 分钟阅读

「都说安全很重要,可到底该先从哪儿下手?」——这就是写给这样的个人开发者的、最最开始的第一步。不是为了吓唬你,而是只把从今天就能动手的事,按顺序讲清楚。

为什么要从「秘密的值」开始

真实发生的事故,很多都不是什么高级攻击,而是从**「秘密的值泄露了」**开始的。本站拿来作为出发点的两个案例,也都是秘密泄露:

也就是说,只要能守住秘密的值,常见事故里的绝大多数就都能防住。所以我们就从这里开始。

.env 是什么(30 秒讲完)

.env(点 env)是把应用要用的秘密的值汇总到一起的配置文件。里面装着数据库的密码、外部服务的 API key、给会话加密用的密钥等等。正因为钥匙都集中在一个文件里,一旦泄露就会一口气全部泄露,所以要最优先地守好它(→ 术语:.env 是什么)。

API key 泄露后会发生什么

API key 是「以你的身份去使用外部服务的、配出来的一把钥匙」。它一旦落到别人手里,就会这样连锁下去。

① API key 泄露(经由公开目录 · git 提交 · 漏洞)
↓ 时间差(数天起)
② 第三方“以你的身份”使用外部服务
③ 盗刷(大量调用)/读写数据/冒名顶替
泄露刚发生时悄无声息。被人有时间差地滥用,某一天账单或损失突然浮出水面。

被偷走的 key 往往会有时间差地被转卖、滥用,「泄露刚发生时啥也没有→过些天账单突然飙升」是很典型的套路。所以「等发现了再说」就晚了,关键是从一开始就别让它泄露

从今天就能做的 4 个防护办法

不需要什么难的东西。先做好这 4 件就行。

1

不公开

别把 .env 和应用本体放到 Web 上能看见的目录(公开根目录)里。对外公开的只能是 public/。在虚拟主机上的具体操作步骤见 这篇文章

2

不提交

.gitignore 里加上 .env*!.env.example 可以放行)。只共享不带值的样例。一旦提交过就能从历史里恢复出来,所以从一开始就别放进去。

3

泄露就全部更换

不是只换一个,而是把有可能泄露的钥匙全部轮换。优先顺序是「外部 API · OAuth → 加密密钥 → 邮件 → DB」。按「已经被看到了」的前提来处理。

4

自查

偶尔确认一下自己的网站,看 /.env 能不能从外面打开(见下)。

自查(只对自己拥有的域名做)

# 返回 200 且带正文就是被公开了。403/404 则暂时没问题
curl -sI https://你的域名/.env | head -1
curl -sI https://你的域名/.git/config | head -1

养成每次上线都确认一遍的习惯,就能尽早发现放置位置的失误。

容易犯的错 vs 正确的第一步

容易犯

  • 反正先跑起来了,就把 .env 直接放在 public 下
  • 想着「以后再删」,把 .env 提交进 git 一次
  • 只换那一个看到被滥用的钥匙

正确的第一步

  • 本体放在公开根目录之外,只公开 public/
  • 从一开始就用 .gitignore.env 排除掉
  • 泄露了就把 env 里的钥匙全部轮换

下一步

走到这一步,接下来就是「自己技术栈里危险的默认设置」和「不在已公开漏洞(CVE)上落后的机制」了。别着急,一个一个来。

接着读

FAQ

Q想学安全,该从哪儿开始?
A

先从『不让秘密的值(.env 和 API key)泄露出去』开始。很多真实事故都是从这里发生的。不公开、不提交到 git、泄露就全部更换、偶尔自查一下,做好这 4 点就能挡住绝大多数事故。

QAPI key 泄露后,具体会发生什么?
A

别人能冒充你去使用外部服务。常见的就是盗刷(用你的账单跑大量调用),以及读写数据。泄露的 key 往往会有时间差地被转卖、滥用。

Q.env 可以放进 git 吗?
A

不可以。要在 .gitignore 里加上 .env*,只共享把值清空后的 .env.example。一旦提交过,即便之后删掉,也能从 git 的历史里恢复出来。