composer audit 命令用于扫描 composer.lock 中已安装依赖的安全漏洞,需 Composer 2.5+ 版本,支持 JSON 输出、跳过 dev 依赖等选项,仅检测不修复,需手动升级或替换风险包。

composer audit 命令用于扫描当前项目的 composer.lock 文件,检查已安装的依赖包是否存在已知的安全漏洞。它会对接 Packagist 的安全告警数据库(Security Advisories Database),快速反馈风险信息。
确保环境支持 audit 命令
该命令从 Composer 2.5 版本起正式引入。如果你使用的是旧版 Composer(如 2.4 或更早),运行 composer audit 会提示“Command 'audit' is not defined”。此时需先升级:
- 运行 composer self-update 升级到最新稳定版
- 确认版本:执行 composer --version,输出应为 Composer version 2.5.x 或更高
基础用法与常见选项
在项目根目录(含 composer.lock)下直接运行即可:
- composer audit:默认扫描全部已安装包,列出所有中高危及以上漏洞
- composer audit --format=json:以 JSON 格式输出,适合集成 CI/CD 或脚本解析
- composer audit --no-dev:跳过 require-dev 中的开发依赖(如测试、构建工具)
- composer audit --locked:强制只基于 lock 文件检查(默认行为,显式声明更明确)
理解输出结果的关键字段
典型输出类似:
security-advisory: doctrine/dbal (cve-2023-30518) - SQL injection possible via malformed query builder input其中:
- doctrine/dbal 是存在风险的包名
- cve-2023-30518 是对应 CVE 编号,可前往 NVD 查看详情
- 括号后文字是漏洞简要描述,说明影响类型和触发条件
注意:audit 不自动修复,仅提示——你需要手动升级或替换对应依赖。
配合修复依赖的实用步骤
发现漏洞后,按以下顺序处理:
- 查看该包当前版本:composer show doctrine/dbal
- 查兼容更新:composer suggest doctrine/dbal(或访问 packagist.org 页面)
- 尝试升级:composer update doctrine/dbal --with-all-dependencies
- 升级后重新运行 composer audit 验证是否消除
- 若无法升级(如破坏兼容性),考虑临时添加 config.advisories-bypass 屏蔽特定 CVE(不推荐长期使用)
基本上就这些。不复杂但容易忽略,建议把它加入日常开发流程或 CI 检查环节。










