前端包管理与供应链安全面试题
模拟真实面试场景,训练对包管理和供应链安全的思考与表达。
一、基础题
1. npm 的语义化版本规范是什么?基础
2. 什么是幽灵依赖?如何避免?基础
3. lockfile 是否应该提交到版本控制?为什么?基础
4. npm workspaces、yarn workspaces 和 pnpm workspaces 有什么区别?基础
5. dependencies、devDependencies 和 peerDependencies 有什么区别?基础
二、进阶题
6. 如何评估是否引入一个新的 npm 包?进阶
7. 供应链攻击有哪些常见形式?进阶
8. pnpm 的严格 node_modules 是如何工作的?解释其 symlink 结构以及为何能防止幽灵依赖。进阶
9. 如何为大型前端项目搭建依赖漏洞监控系统?进阶
10. 解释 npm 的安装算法。运行 `npm install` 时逐步发生了什么?进阶
11. 什么是 SBOM(软件物料清单)?如何为项目生成和维护 SBOM?进阶
12. 在具有数百个依赖的项目中如何处理许可证合规问题?使用哪些工具和流程?进阶
13. npm link、yarn link 和 pnpm link 有什么区别?何时使用每种方式?进阶
三、高级题
14. 设计一个企业级依赖安全治理体系。深入
参考答案要点:
- 引入审批:白名单 + 自动化扫描。
- 私有 registry:统一来源,禁止直接从公共源安装。
- 持续审计:CI 中集成 npm audit/Snyk/SBOM 检查。
- 漏洞响应:分级处理、SLA、紧急修复流程。
- 定期清理:移除无用依赖,降低攻击面。
评分维度:
- 引入管控(25%)
- 来源控制(20%)
- 持续审计(20%)
- 响应机制(20%)
- 可持续性(15%)
常见错误:
- 只关注安全扫描而忽视依赖引入的源头管控。
- 缺少分级响应机制,所有漏洞同一优先级处理。
- 依赖审计工具产生大量误报,团队产生告警疲劳。
扩展追问:
- 如何处理第三方依赖中发现零日漏洞但补丁尚未发布的场景?
- 在大型组织中如何协调多个团队统一执行依赖安全策略?
- 如何量化评估依赖安全治理体系的成熟度?
15. Monorepo 中如何做好依赖版本管理?深入
参考答案要点:
- 公共依赖提升到 root,减少重复。
- 内部包使用 workspace 协议。
- 统一版本策略,避免多版本冲突。
- 使用 Changesets 管理版本和 changelog。
- 构建依赖图,检测循环依赖和无用依赖。
评分维度:
- 公共依赖管理(25%)
- 内部包协议(20%)
- 版本策略(20%)
- 工具选择(15%)
- 风险控制(20%)
常见错误:
- 不同子项目使用同一依赖的不同版本,导致包体积膨胀和行为不一致。
- 在内部包中使用 link 协议代替 workspace 协议,版本管理混乱。
- 未使用 Changesets 等自动化工具,依赖版本变更靠人工管理。
扩展追问:
- 在 pnpm workspaces 中如何配置 catalog 协议统一管理版本?
- 如果内部包和公共依赖都修改了 API,如何协调发布顺序?
- Monorepo 中如何避免依赖地狱(dependency hell)?
16. 设计一个依赖防火墙架构,拦截所有包安装操作,应用安全策略,在恶意包到达开发者之前阻止它们。深入
17. 如何实现一个自定义包注册表代理(类似 Verdaccio)?考虑缓存、认证、包发布工作流和公共注册表集成。深入
18. 设计一个供应链安全事件应急响应计划。包括:检测、分类、遏制、修复和事后复盘。在每个阶段应集成哪些工具?深入
安全事件复盘
0. 基本信息基础
基本信息
- 事件编号:SEC-2025-001
- CVE 编号:CVE-2025-XXXXX
- 发现时间:2025-01-15 14:23 UTC
- 影响范围:3 个生产服务、2 个开发环境
0. 时间线基础
时间线
- 14:23 检测到异常包下载
- 14:30 确认存在 CVE,触发告警
- 14:45 标记受影响版本,阻断新安装
- 15:30 完成所有受影响实例的补丁升级
- 16:00 恢复生产环境正常服务
0. 根因分析基础
根因分析
- 根本原因:开发人员在 PR 中间接引入了传递依赖
- 检测遗漏:本次引入绕过 CI 扫描(配置未覆盖传递依赖)
0. 改进措施基础
改进措施
- 更新 CI 扫描配置,覆盖所有传递依赖
- 增加传递依赖变更的 PR 标签
- 完善 SBOM 自动生成流程
- 缩减依赖引入审批豁免时间窗口
**评分维度**:
- 阶段划分完整性(25%)
- 检测与监控工具覆盖(20%)
- 遏制与修复策略(25%)
- 复盘与持续改进(15%)
- 与组织结构的结合(15%)
**常见错误**:
- 缺少独立的安全事件响应团队和明确的 RACI 矩阵。
- 检测工具收集但未建立有效的告警分级和响应 SLA。
- 修复后未进行回归测试,导致补丁引发业务中断。
- 事后复盘流于形式,未形成可执行的改进项。
**扩展追问**:
- 如何在一个拥有 200+ 微服务的组织中标准化应急响应流程?
- 设计一个自动化安全事件演练方案(Tabletop Exercise),包含哪些场景?
- 如何确保外部安全公告发布前(零日漏洞),内部已有检测能力?
- 如何处理 npm 包被作者主动植入后门的恶意包事件(如 event-stream 事件)?
---
**标签**:`#package-management` `#supply-chain` `#面试题`
> **最后更新**:2026-06-25