标准答案

  1. 将配置解析为类型化对象,启动失败应给出缺失项名称但不打印敏感值。
  2. 区分构建时变量、运行时变量和密钥,避免把服务端 Secret 打进客户端产物。
  3. 配置热更新要有版本、审计、回滚和并发可见性,不要随意修改全局对象。
  4. 子进程继承环境变量时要显式筛选,防止凭据传播到不可信程序。

题目解析

环境变量只是进程输入,可能出现在日志、错误页面、诊断转储、子进程环境和监控中。启动时要做类型、范围和必填校验,但不能打印完整值。

构建时变量、运行时公开配置和服务端 Secret 应分层。任何进入客户端 bundle 的值都等于公开,密钥要通过 Secret 或密钥管理服务注入,并控制子进程继承。

热更新配置要有版本、审计、并发可见性和回滚;不要随意修改全局对象让不同请求看到半更新状态。

常见误区

  • 误区:启动时打印完整 process.env。改正:只打印非敏感键名、来源和脱敏摘要。
  • 误区:把秘密写入 Docker build ARG。改正:使用运行时 Secret,避免进入镜像层和构建日志。
  • 误区:客户端配置和服务端密钥放在同一对象。改正:建立明确的公开/私密类型和传递边界。

作者信息