0

ENV 差异检查器

比较两个 .env 文件(暂存与生产、部署之前与部署之后),并准确查看添加、删除或更改了哪些密钥,并自动屏蔽看起来秘密的值。

Buy Me a Coffee at ko-fi.com
处理中... 0%
解析两个文件
计算差异
掩盖秘密
完成

结果

将暂存 .env 文件与生产环境进行比较,或者将今天的部署配置与上周的进行比较,可以直观地看出真正的中断是如何开始的:缺少 DATABASE_URL、悄然更改的 PORT、在一个环境中轮换但在另一个环境中没有轮换的 API 密钥。将这两个文件粘贴到通用文本差异中也没有多大帮助 - 它会显示哪些行不同,而不是实际更改了哪些环境变量,并且当您与队友共享输出时,它会愉快地打印每个秘密值。

该工具以 dotenv 实际读取的方式解析这两个文件 - 每行一个 KEY=value 对,忽略 # 注释和空行,不加引号的单引号或双引号值(仅在双引号内使用 \n 未转义,完全按照 dotenv 约定指定),以及可选的导出 KEY=value 前缀可以容忍 shell 源的 env 文件使用它的方式。每个文件都成为一个干净的键到值映射,然后通过键对两个映射进行比较:仅存在于文件 A 中的为“已删除”,仅存在于文件 B 中的为“添加”,同时存在于两个文件中且具有不同值的为“已更改”,相同的值“未更改”并默认隐藏,因此表始终关注实际不同的内容。

使其能够安全地实际使用真实秘密的功能是自动屏蔽。 diff 表中显示的每个值都会根据两个独立的信号进行检查:其密钥名称是否看起来像一个秘密(与 KEY、SECRET、TOKEN、PASSWORD、PRIVATE 或 CREDENTIAL 进行不区分大小写的匹配),或者该值本身是否具有高香农熵 - 相同的信息论度量(值字符上的 -Σ p(c)·log2(p(c))),将 API 密钥、令牌和随机密码标记为在统计上与普通单词不同即使键名没有给出任何提示。任一信号都足以将值屏蔽到其第一个和最后两个字符,并为每个更改行的旧侧和新侧独立计算。

一切——解析、比较、熵评分和屏蔽——完全在您的浏览器中运行;文件以及从文件中提取的任何值都不会发送到任何地方。对于一个工具来说,这是正确的保证,该工具的全部工作就是查看两个可能并排包含真实数据库凭据、API 密钥和密码的文件。