跳到主要内容

.env 文件校验器 —— 解析、secret 扫描、必填检查、prod/staging/dev 对比

.env 文件校验器, 按 Bash 语法解析 .env, 检测重复键 / 缺失必填 / 不安全值 / 疑似 secret 泄露, 还能横向对比 prod / staging / dev 三套环境差异。

  • 本地处理
  • 分类 开发运维
  • 适合 分享前检查文件类型、大小、元数据和明显不匹配信号。
示例:
你的 .env
必填 key schema (可选)
一行一个: `KEY=required`、`KEY=optional:默认值`, 或者只写 `KEY` 当 required。

语法

0

没问题 —— .env 文件干净。

Secret 扫描

0

没识别到已知 secret 形状。通用高熵的值仍可能是你的问题。

Schema 校验

0

在上面粘 schema, 才能跑必填检查。

这个工具能做什么

给真要提交进仓库前最后看一眼的 `.env` 用的 linter。解析的方言跟 Node `dotenv` 和 Bash 一致 —— `KEY=VALUE`、`export KEY=value`、双引号字 符串带 `\n` `\t` 转义、单引号字面量字符串、整行 `#` 注释和值后的 `# 行内注释`、`${VAR}` 变量插值。在解析之上跑四个语法检查: (1) 重复键, (2) 不合法 key (含空格、数字开头、小写驼峰), (3) 空 值, (4) 引号不匹配。然后是 secret 扫描器, 识别 AWS access key (`AKIA…`)、GitHub token (`ghp_…`)、OpenAI key (`sk-…`)、Stripe 实 盘 / 测试 key (`sk_live_…` / `sk_test_…`)、Slack token (`xoxb-` / `xoxp-`)、JWT (`eyJ…`), 加上一个通用的高熵兜底。需要的 话还能贴一个必填 schema (`KEY=required` 或 `KEY=optional:default`) —— 容器在线上 boot 阶段崩之前就把缺的 env 抓出来。最后一个 tab 是三列对比, 粘 2 或 3 个 .env (prod / staging / dev), 输出表格: 哪些 key 三处都有、哪些只在一处、哪些值不一致。100% 浏览器本地 跑, `.env` 不离开当前标签页。

工具细节

输入
文本
页面会根据工具类型展示文本框、数值控件、文件选择或结构化输入。
输出
即时结果 + 复制
结果区优先给出可操作结果,支持项会显示复制、下载或可视化预览。
隐私
浏览器本地处理
主工具逻辑未发现外部 API 调用,输入通常留在当前标签页内处理。
保存 / 分享
可分享链接状态
关键设置会进入 URL,复制链接后别人能复现同一组参数。
性能预算
首屏 JS ≤ 22 KB
没有声明 WASM 依赖,适合快速打开和移动端使用。
适用场景
开发运维 · 程序员
分类和职业标签用于推荐相关工具、组织内链,并帮助用户快速判断是否适合当前任务。

怎么用

  1. 1. 输入

    把内容粘贴或拖入工具面板。

  2. 2. 处理

    点击按钮,在浏览器内本地处理,文件不上传。

  3. 3. 复制 / 下载

    一键复制结果或下载到本地。

.env 文件校验器 适合怎么用

适合在上传、交付、归档、客服排查前使用,也适合任何文件离开本机前的本地复核。

适合文件任务

  • 分享前检查文件类型、大小、元数据和明显不匹配信号。
  • 上传、归档、接收或审核前整理混合文件夹。
  • 敏感文件先留在浏览器里处理,不用交给账号型服务。

文件检查项

  • 不要只凭扩展名判断真实文件类型。
  • 文件发给客户、供应商或公开页面前,先看元数据。
  • 复制、转换或导出结果确认前,保留原文件。

下一步可以接着做

这些入口会把当前任务接到更完整的工具链里。

  1. 1 JWT 解码器 解码 JWT 的 Header / Payload / Signature —— 看声明、查过期、复制字段 —— 浏览器本地 打开
  2. 2 .editorconfig 生成器 可视化 .editorconfig 构建 —— 缩进 / 字符集 / 换行 / 末尾空白 / 按 glob 覆盖 —— 浏览器本地 打开
  3. 3 JSON 格式化与校验 浏览器内即时格式化、校验、压缩 JSON,数据不离开本地。 打开

真实使用场景

  • 抓重复键, 别让 prod 被默默覆盖

    你在 `.env` 顶部加了 `STRIPE_KEY=sk_test_…`, 一周后合 PR 时又在文件底部追加了 `STRIPE_KEY=sk_live_…`。Node `dotenv` 保留最后一条; 本地用测试 key 测试通过, staging 用线上 key 启动。粘进来, "重复键" 面板会指出 STRIPE_KEY 出现在第 4 行和第 41 行, 两个值并排列出来。删一条, 发版。

  • 在 docker-compose up 前确认新服务的 env 都齐了

    新起的 Rust 服务要 `DATABASE_URL`、`REDIS_URL`、 `JWT_SECRET`、`SENTRY_DSN`。README 的 "config" 段列了。把 这四行写进 schema 框 (`KEY=required` 一行一个), 左边粘 `.env`。"Schema" tab 里每条满足的 key 是绿的, 缺的是红 的 —— 一般都是 `SENTRY_DSN`, 每次都是。省下容器启动 30 秒崩溃一次的循环。

  • 在 git push 之前抓住泄露的 AWS access key

    团队里有人在 `.env.example` 里塞了 `AWS_ACCESS_KEY_ID=AKIAIOSFODNN7…`, 理由是 "只是个示例"。 secret 扫描器立刻标这一行是 AWS 形状, CI 里的 gitleaks 步 骤迟早能查出来, 但要等 4 分钟。这里 200 毫秒抓住, 立即换 key (已经公开了, 当烧掉处理), 把 `.env.example` 改成 `AWS_ACCESS_KEY_ID=AKIA_REPLACE_ME`。

  • 对比 staging 和 production env, 确认只有一处刻意改动

    要上一个新功能 `FEATURE_NEWPAY_ENABLED`。你以为 production 和 staging 只差这个 + 数据库 URL 和 region 这两个明显的。 两个文件粘进 "对比" tab, 表格输出: 47 个 key 相同, 3 个 值不同 (DB_URL、AWS_REGION、FEATURE_NEWPAY_ENABLED), 0 个 只在一边出现。和你预期完全一致 —— 放心 rollout。

  • 把 docker-compose `environment:` 块翻出来的 .env 过一遍语法

    要把 docker-compose 的服务搬到 k8s, 得把 `environment:` YAML 翻成 `.env` ConfigMap。把转好的 .env 粘进来, 语法检 查指出两行漏了引号 —— 值里有 `:` 或空格那种。补上引号, 复制回去, apply。

  • 同事 Slack 发来的 .env 先审一遍再存进 1Password

    同事丢一个 .env 给你接手某个服务。存进密码管理器之前你 想知道: 标准 key 是不是齐? 有没有明显泄露? 有没有重复? 一个 "全部检查" 视图把这三件事在一屏里答完, "脱敏" 开关 让你能安全截图进交接文档。

常见踩坑

  • 把真生产 `.env` 粘进来 "测试一下工具"。解析全在浏览器里没错, 但 "把 prod secret 粘进任何 web form" 这个习惯不该养成。复制一份, 把值清空, 粘清空的副本进来。

  • 期待 `${VAR}` 跨文件解析变量。插值只在同一份输入里, 按定义顺序解析 (跟 Node `dotenv-expand` 一致)。跨文件应在运行时层做, 不是静态 linter 的事。

  • 给数字和布尔值加引号。`.env` 的值永远是字符串, `PORT=3000` 和 `PORT="3000"` 解出来都是字符串 "3000"。引号只在值里有换行、`#`、或要保留前后空格时才有意义。

  • 在 Node `dotenv` 加载的 `.env` 里写 `export KEY=value`, 然后惊讶 `export ` 跑进了 key 名。Node `dotenv` 按惯例会去掉开头的 `export `, 这个工具同步这一规则。但纯 Bash 或 k8s ConfigMap 消费者不会脱 —— 跨平台请改回 `KEY=value`。

  • 把空值当作 "没有这个 key" 处理 required 检查。`KEY=` (空) 和缺这一行一样, 都不满足 `required` —— 这跟主流配置库一致。如果空真的是有意为之, schema 里把这个 key 写成 `optional:` 即可。

  • 指望 secret 扫描器认出你们内部的自定义 token。它认八种常见形状 (AWS、GitHub、OpenAI、Stripe live/test、Slack、JWT、通用高熵兜底)。如果你们有自己的 token 形状, 加到团队 gitleaks 配置里 —— 客户端扫描器没法提前知道你们的私有格式。

隐私说明

你粘的 `.env` 不离开当前浏览器标签页。解析、语法检查、secret 扫描、schema 校验、对比视图全部是纯 JavaScript —— 没有网络请 求, 没有对文本框内容做埋点, 也不写 localStorage。URL 只带选 项 (当前 tab、脱敏开关), "分享设置" 链接给同事打开看到的是 同样的工作流, 但他粘自己的文件, 你的内容不会跟着走。话说回 来: 真生产 `.env` 装的是真生产 key, 粘进自己的浏览器离 "手 滑 Ctrl-V 到 Slack" 也就一步距离。更稳妥的做法是: 复制一份, 把你只关心结构 (key 名、是否存在、引号对不对) 的值清空, 粘 清空的副本进来。"脱敏" 开关是同一个用意 —— 能安全截图校验 结果, 值不出现在截图里。

常见问题

类似工具组合

做你这行的人, 还会一起用这些。

Made by Toolora · 100% client-side · Updated 2026-05-29