composer audit用于检查PHP项目依赖的安全漏洞,通过扫描composer.lock文件并对照本地缓存的安全数据库(如FriendsOfPHP/security-advisories)快速识别风险。自Composer 2.5起内置该命令,无需联网,支持多种选项:--format=json输出结构化数据便于CI/CD集成,--no-dev跳过开发依赖检查,--show-source显示风险包的引入源。若检测到问题,例如“Package guzzlehttp/guzzle is vulnerable: CVE-2023-31567”,则提示具体漏洞及建议升级版本。应对措施包括使用composer update升级至安全版本、评估替代方案或使用场景中的实际风险,并将composer audit加入持续集成流程以预防新风险。定期执行此命令可有效提升项目安全性,尤其在发布前进行检查十分必要。

当你使用 Composer 管理 PHP 项目的依赖时,composer audit 是一个非常实用的命令,用于检查已安装的依赖包是否存在已知的安全漏洞。这个功能从 Composer 2.5 版本开始引入,帮助开发者在本地快速发现潜在风险。
什么是 composer audit
composer audit 命令会扫描 composer.lock 文件中记录的所有已安装依赖,然后对照公开的安全数据库(如 FriendsOfPHP/security-advisories)来识别是否存在已知的安全问题。
它不需要联网调用远程 API,而是依赖本地或缓存的安全公告数据,因此速度快且稳定。
如何使用 audit 命令
在项目根目录下运行以下命令即可开始检查:
composer audit你也可以根据需要添加选项:
- composer audit --format=json:以 JSON 格式输出结果,适合集成到 CI/CD 流程中
- composer audit --no-dev:仅检查生产环境依赖,忽略开发依赖(如 phpunit、phpstan 等)
- composer audit --show-source:显示具体是哪个依赖引入了存在风险的包
常见输出说明
如果发现存在安全问题,输出会类似这样:
Package guzzlehttp/guzzle is vulnerable: CVE-2023-31567 - SSRF and improper TLS verification in Guzzle这表示你项目中的 guzzlehttp/guzzle 包存在已知漏洞,建议尽快升级到修复版本。Composer 通常还会提示建议的最小安全版本。
如何处理发现的问题
看到警告后,可以采取以下步骤:
- 运行 composer update vendor/package 将问题包更新到安全版本
- 如果无法直接升级,查看是否有替代方案或临时补丁
- 确认该漏洞在你的使用场景中是否实际可被利用(例如,是否调用了危险方法)
- 将 audit 命令加入持续集成流程,防止未来引入新的风险依赖
基本上就这些。定期运行 composer audit 能有效提升项目安全性,尤其是上线前或发布新版本时值得执行一次检查。不复杂但容易忽略。










