
经过本节学习,你将获得:
每次准备将代码上传到 GitHub 或其他平台之前,请检查:
没有硬编码密钥:代码里没有任何真实的密码、API 密钥或 Token
.env 已被忽略:.env 文件已加入 .gitignore
没有敏感日志:console.log 或调试语句中没有输出敏感信息
没有测试数据泄露:测试代码中没有使用真实的用户数据或密钥
在将项目部署到互联网之前,额外检查:
环境变量已配置:部署平台上已正确设置所有需要的环境变量
调试模式已关闭:生产环境没有开启 debug 模式
错误信息已简化:错误页面不会暴露详细的技术信息
HTTPS 已启用:网站使用 HTTPS 而非 HTTP
每隔一段时间(比如每月),回顾一下:
密钥是否需要轮换:长期使用的密钥是否应该更换
依赖是否需要更新:项目使用的库是否有安全更新
权限是否合理:API 密钥的权限是否只包含必要的范围
在你的代码编辑器中,使用搜索功能查找这些关键词:
password
secret
api_key
apiKey
token
sk-
pk-
AKIA
-----BEGIN
如果搜索结果中出现了看起来像真实密钥的内容(而不是 process.env.XXX 这样的引用),就需要处理。
如果你使用 Git,在提交前运行:
git diff --cached
这会显示你即将提交的所有更改。快速扫一眼,确认没有敏感信息。
确认敏感文件确实被忽略了:
git status
如果 .env 文件出现在列表中,说明它没有被正确忽略。
解决步骤:
.env 加入 .gitignoregit rm --cached .env
git commit -m "移除敏感文件"
即使你删除了文件,Git 历史中仍然保留着它。如果仓库是公开的,密钥已经泄露。
必须更换密钥,没有例外。
判断标准:
| 特征 | 可能是密钥 | 可能不是密钥 |
|---|---|---|
| 长度 | 较长(20+ 字符) | 较短 |
| 内容 | 看起来随机的字母数字 | 有明显含义的单词 |
| 前缀 | 有特定前缀如 sk-、AKIA |
普通前缀 |
| 位置 | 赋值给类似 API_KEY 的变量 |
普通变量 |
如果还是不确定,宁可当作密钥处理。
安全检查不需要花很多时间。一旦养成习惯,每次提交前花 30 秒扫一眼,就能避免大部分问题。
每次看到 AI 生成的代码中有类似密钥的长字符串,第一反应应该是:"这是真实密钥还是占位符?"