答案:使用 composer audit 可检查 PHP 项目依赖中的安全漏洞。通过内置命令扫描 composer.lock 文件,比对 FriendsOfPHP 安全数据库,输出高危包及修复建议,需定期执行并更新依赖以降低风险。

在使用 Composer 管理 PHP 项目依赖时,确保所引入的第三方包没有已知的安全漏洞非常重要。Composer 自身并不直接提供漏洞扫描功能,但可以通过集成官方推荐的工具来实现自动检查。下面教你如何用 Composer 检查项目依赖是否存在安全漏洞。
启用安全检查插件
Composer 官方维护了一个名为 composer/composer-security-check-plugin 的插件,它可以自动检测 composer.lock 文件中已安装的依赖是否存在已知的安全问题。
从 Composer 2.5 开始,安全检查功能已内置,默认情况下只需运行一条命令即可。
- 进入你的 PHP 项目根目录(确保有 composer.json 和 composer.lock)
- 执行以下命令检查安全漏洞:
composer audit
该命令会自动读取 composer.lock 文件,并与官方维护的漏洞数据库(来自 FriendsOfPHP/security-advisories)进行比对,输出存在风险的依赖包。
理解 audit 输出结果
执行 composer audit 后,可能看到几种情况:
- No security vulnerability found:当前依赖中未发现已知漏洞,项目相对安全
- 列出具体包名、漏洞描述、严重程度(low/medium/high/critical)、CVE 编号和修复建议
- 提示你需要升级某个库到指定版本以修复问题
例如:
found 1 security vulnerability in your dependencies
- Package guzzlehttp/guzzle: CVE-2023-36718 - Improper Input Validation
Upgrade to version 7.5.0 or later.
定期检查并及时更新依赖
安全不是一次性任务。建议将 composer audit 加入开发流程:
- 在本地开发完成后运行一次
- 在 CI/CD 流程中加入该命令,防止带漏洞代码上线
- 定期手动更新依赖并重新检查,保持第三方库处于最新稳定状态
更新依赖示例:
composer update vendor/package-name
若某些包已不再维护或无法升级,应评估是否替换为更安全的替代方案。
注意事项
目前 composer audit 只检查 lock 文件中的生产与开发依赖,不支持忽略某些包(暂无 exclude 功能),也不报告间接依赖的独立漏洞(仅基于最终解析版本判断)。
它依赖 FriendsOfPHP 的公开漏洞库,因此只能发现已被披露的问题,不能检测未知漏洞(0-day)。
基本上就这些。只要记得经常运行 composer audit,就能大幅降低因第三方组件引发的安全风险。不复杂但容易忽略。










