跳到主要内容
知仓学习社ZHICANG

env-manager

环境变量管理器:扫描、校验、同步 .env 文件,生成安全配置模板

读凭据严重 18 · 高危 0laolaoshiren/claude-code-skills-zh

它会碰到什么

扫了多少1 个文本文件,2 KB
它会碰到什么读凭据
命中总数18 处
命中统计严重 18 · 高 0 · 中 0 · 低 0
逐条看命中(18 条严重或高危)
  • 严重 SKILL.md:3cred-paths
    description: 环境变量管理器:扫描、校验、同步 .env 文件,生成安全配置模板
  • 严重 SKILL.md:14cred-paths
    - 检测所有 `.env*` 文件(.env / .env.local / .env.development / .env.production)
  • 严重 SKILL.md:14cred-paths
    - 检测所有 `.env*` 文件(.env / .env.local / .env.development / .env.production)
  • 严重 SKILL.md:14cred-paths
    - 检测所有 `.env*` 文件(.env / .env.local / .env.development / .env.production)
  • 严重 SKILL.md:14cred-paths
    - 检测所有 `.env*` 文件(.env / .env.local / .env.development / .env.production)
  • 严重 SKILL.md:24cred-paths
    - 对比 .env.example 与实际 .env 文件的差异
  • 严重 SKILL.md:24cred-paths
    - 对比 .env.example 与实际 .env 文件的差异
  • 严重 SKILL.md:27cred-paths
    - 生成 `.env.example` 模板(仅包含变量名和说明,不含真实值)
  • 严重 SKILL.md:28cred-paths
    - 生成 `.env.schema.json`(结构化校验规则)
  • 严重 SKILL.md:39cred-paths
    ### .env.example 示例
  • 严重 SKILL.md:70cred-paths
    2. 在 .env 中添加 SENDGRID_API_KEY
  • 严重 SKILL.md:76cred-paths
    - [ ] `.env` 已添加到 `.gitignore`
  • 严重 SKILL.md:77cred-paths
    - [ ] `.env.example` 存在且与代码同步
  • 严重 SKILL.md:100cred-paths
    | Next.js | NEXT_PUBLIC_ | .env.local | 自动 |
  • 严重 SKILL.md:101cred-paths
    | Vite | VITE_ | .env | 自动 |
  • 严重 SKILL.md:102cred-paths
    | CRA | REACT_APP_ | .env | 自动 |
  • 严重 SKILL.md:103cred-paths
    | Nuxt | NUXT_PUBLIC_ | .env | 自动 |
  • 严重 SKILL.md:104cred-paths
    | Vue CLI | VUE_APP_ | .env | 自动 |

这一栏是扫描器报的事实,不是结论。命中多不等于有毒(安全工具、规则库、示例脚本本来就会包含危险写法),命中少也不等于干净。它和你手上的凭据、文件、网络有什么关系,需要你自己看。

技能内容

环境变量管理器

触发条件

当用户要求管理环境变量、.env 文件、配置同步、Secrets 检查时激活。

工作流程

1. 扫描项目

  • 检测所有 .env* 文件(.env / .env.local / .env.development / .env.production)
  • 默认只提取变量名、来源文件和是否为空;真实值必须脱敏,不写入报告或终端输出
  • 扫描代码中引用的环境变量(process.env.XXX / os.environ['XXX'] / os.getenv('XXX')
  • 识别静态扫描中未发现引用的变量(仅作为待人工确认候选)
  • 识别已使用但未定义的变量(缺失配置)

2. 校验分析

  • 检查必填变量是否有默认值
  • 验证 URL 格式、端口号范围、布尔值格式
  • 检测硬编码的敏感信息(API Key / Token / Password)
  • 对比 .env.example 与实际 .env 文件的差异

3. 生成/修复

  • 生成 .env.example 模板(仅包含变量名和说明,不含真实值)
  • 生成 .env.schema.json(结构化校验规则)
  • 检测到硬编码密钥时,建议迁移到环境变量
  • 生成 dotenv 加载配置(针对不同框架)

4. 同步

  • 在 monorepo 中同步共享环境变量
  • 生成 Docker Compose 的 env_file 配置
  • 生成 CI/CD 的 Secrets 配置清单

输出格式

.env.example 示例

# 应用配置
APP_NAME=my-app
APP_ENV=development          # development | staging | production
APP_PORT=3000                # 服务端口 (1-65535)
APP_DEBUG=true               # 调试模式

# 数据库
DB_HOST=localhost
DB_PORT=5432
DB_NAME=mydb
DB_USER=                     # 必填
DB_PASSWORD=                 # 必填,生产环境请使用 Secrets

# 第三方服务
REDIS_URL=                   # 必填,格式:redis://host:port
JWT_SECRET=                  # 必填,至少 32 位随机字符串

校验报告示例

📋 环境变量分析报告
==================
✅ 定义且使用: 12 个
⚠️  定义未使用: 2 个(S3_BUCKET, OLD_API_KEY)
❌ 使用未定义: 1 个(SENDGRID_API_KEY)
🔒 硬编码敏感信息: 1 处(src/auth.js:23)

建议:
1. 人工确认 S3_BUCKET 和 OLD_API_KEY 是否被 CI、部署脚本或动态代码引用,再决定是否删除
2. 在 .env 中添加 SENDGRID_API_KEY
3. 将 src/auth.js:23 的硬编码 token 迁移到环境变量

安全检查清单

  • [ ] 扫描和报告只展示变量名及脱敏状态,不回显真实 Secret
  • [ ] .env 已添加到 .gitignore
  • [ ] .env.example 存在且与代码同步
  • [ ] 无硬编码的 API Key / Token / Password
  • [ ] 生产环境使用 Secrets 管理(GitHub Secrets / AWS SSM / Vault)
  • [ ] JWT_SECRET / ENCRYPTION_KEY 足够随机(32+ 字符)
  • [ ] 数据库密码不在日志中输出

修改边界

  • 不要自动删除或改写真实 .env;先展示差异并取得用户确认。
  • “未使用”只代表静态扫描没有发现,仍需检查 CI、容器、部署平台和动态变量访问。
  • 不把生产 Secret 复制到 .env.example、Schema、日志、Issue 或聊天输出中。

常见陷阱

  • Next.js:只有 NEXT_PUBLIC_ 前缀的变量会暴露给客户端,后端专用变量不要加此前缀
  • Docker:构建时的 ARG 和运行时的 ENV 是不同的,不要混淆
  • Create React App.env 中的变量必须以 REACT_APP_ 开头才会被注入
  • Vite:使用 VITE_ 前缀暴露变量给客户端
  • monorepo:根目录的 .env 不会自动被子包读取,需要显式配置

框架适配

| 框架 | 客户端前缀 | 配置文件 | 加载方式 |

|------|-----------|---------|---------|

| Next.js | NEXT_PUBLIC_ | .env.local | 自动 |

| Vite | VITE_ | .env | 自动 |

| CRA | REACT_APP_ | .env | 自动 |

| Nuxt | NUXT_PUBLIC_ | .env | 自动 |

| Vue CLI | VUE_APP_ | .env | 自动 |

想直接用这个技能?

本站把开放许可(MIT / Apache 等)的技能按仓库打包整理到网盘,点一下转存到你自己的网盘,不用一个个从 GitHub 拉。许可未声明的技能只给原始仓库链接,不打包。

它属于哪个仓库

星标★ 849
本站分层T2
该仓技能数20
原文件路径skills/env-manager/SKILL.md

同一个仓库里的其他技能

看这个仓库的全部 20 个技能