Composer audit 可检测 PHP 项目依赖中的安全漏洞,自 2.7 版本起内置支持,运行 composer audit 即可扫描,输出漏洞详情并以非零状态码提示风险;支持 --format=json 生成机器可读报告,便于集成到 CI 流程(如 GitHub Actions),在构建时自动检查并阻断高危依赖,建议结合定期更新、自动更新工具及报告归档实践提升安全性。

Composer 提供的 audit 命令可以帮助 PHP 项目检测依赖包中的已知安全漏洞。将该命令集成到 CI(持续集成)流程中,可以在每次代码变更时自动检查依赖风险,提升项目安全性。
使用 Composer audit 检查依赖漏洞
Composer 自 2.7 版本起内置了 audit 命令,无需额外安装插件。运行以下命令即可扫描项目中依赖的安全问题:
该命令会输出发现的漏洞列表,包括受影响的包、漏洞描述、严重程度和引用链接(如 CVE 或 GHSA 编号)。如果存在高危漏洞,命令将以非零状态码退出,适合在自动化流程中判断是否阻断构建。
导出安全报告为机器可读格式
为了便于集成到 CI 工具或生成归档报告,Composer audit 支持以 JSON 格式输出结果:
composer audit --format=json > security-report.json生成的 JSON 文件包含完整的漏洞信息,字段清晰,适合后续解析处理。例如可用于上传至安全平台、生成 HTML 报告或存入审计日志。
将审计结果集成到 CI 流程
在主流 CI 系统(如 GitHub Actions、GitLab CI、Jenkins)中添加安全审计步骤非常简单。以下是 GitHub Actions 的示例配置:
run: composer audit --format=json > audit-report.json || echo "Security vulnerabilities found"
你还可以结合脚本判断输出内容,决定是否上传报告或标记构建为失败。例如:
composer audit --format=json > audit-report.jsonif [ $? -ne 0 ]; then
echo "Security issues detected. Uploading report."
# 可在此上传 report 到存储或通知系统
exit 1
fi
部分团队还会将报告附加到 CI 构建产物中,方便追溯历史依赖状态。
建议的最佳实践
提高安全审计的有效性,可以遵循以下建议:
- 在
composer.json中保持依赖更新,定期执行composer update - 在 CI 中对 main 分支和 Pull Request 都运行 audit 检查
- 结合 Dependabot 或 Renovate 自动接收漏洞修复的更新建议
- 将安全报告归档至少 90 天,满足合规审计要求
基本上就这些。Composer audit 虽然功能简洁,但足够实用,是 PHP 项目安全防线的重要一环。不复杂但容易忽略。










