Composer的--audit命令如何生成机器可读的JSON报告?

发布时间 - 2025-12-26 00:00:00    点击率:
Composer的--audit命令默认不支持JSON输出,仅提供文本报告;自2.5.0起新增--format=json选项,可直接生成含vulnerabilities数组的标准JSON报告。

Composer 的 --audit 命令本身**不支持直接输出 JSON 格式**,它默认只输出人类可读的文本报告(含漏洞摘要、包名、严重等级等)。若需机器可读的 JSON 报告,必须配合其他工具或使用 Composer 2.5+ 的实验性功能。

使用 --format=json(Composer 2.5.0+)

从 Composer 2.5.0 开始,composer audit 新增了 --format=json 选项,这是最直接的方式:

  • 确保已升级到 Composer ≥ 2.5.0:composer self-update
  • 运行命令:composer audit --format=json
  • 输出为标准 JSON,包含 vulnerabilities 数组、每个漏洞的 idtitleseveritypackageversionfixedIn 等字段
  • 可直接重定向保存:composer audit --format=json > audit-report.json

兼容旧版 Composer(

若无法升级 Composer,可通过解析文本输出 + 工具转换实现近似效果:

  • 使用 --no-ansi --no-interaction 减少干扰字符:composer audit --no-ansi --no-interaction
  • 借助 jq 或自定义脚本清洗并结构化(例如用 Python 的 re 模块提取 CVE 编号、包名、版本等)
  • 更稳妥的做法是调用 Packagist Security API:向 https://packagist.org/security-advisories.json 发起请求,传入项目依赖清单(composer show --format=json 输出),自行比对已知漏洞

注意审计数据来源与局限性

composer audit 的结果依赖 Packagist 官方维护的安全通告数据库,不是本地扫描工具:

  • 仅检测已收录在 FriendsOfPHP/security-advisories 中的漏洞
  • 不检查自定义私有包、未提交到 Packagist 的 fork 包或代码逻辑漏洞
  • JSON 输出中 severity 字段值为 low / medium / high / critical,无 CVSS 分数

CI/CD 中建议的稳定用法

在自动化流程中生成可靠 JSON 报告,推荐组合使用:

  • 强制指定 Composer 版本(如 GitHub Actions 中用 composer/setup-php@v2 设置 composer-version: '2.5'
  • 添加失败退出码判断:composer audit --format=json || exit 1(有漏洞时返回非零码)
  • jq 过滤关键信息,例如只提取高危以上漏洞:composer audit --format=json | jq '.vulnerabilities[] | select(.severity == "high" or .severity == "critical")'


# php  # python  # js  # git  # json  # composer  # github  # 工具 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: JavaScript如何实现类型判断_typeof和instanceof有什么区别  Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程  ,网页ppt怎么弄成自己的ppt?  米侠浏览器网页图片不显示怎么办 米侠图片加载修复  Linux系统命令中tree命令详解  如何在万网开始建站?分步指南解析  Python进程池调度策略_任务分发说明【指导】  如何为不同团队 ID 动态生成多个“认领值班”按钮  Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出  Laravel中的Facade(门面)到底是什么原理  php打包exe后无法访问网络共享_共享权限设置方法【教程】  北京网站制作的公司有哪些,北京白云观官方网站?  如何在腾讯云服务器上快速搭建个人网站?  网页设计与网站制作内容,怎样注册网站?  如何在服务器上配置二级域名建站?  Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案  java中使用zxing批量生成二维码立牌  如何在阿里云完成域名注册与建站?  Laravel如何使用Service Provider服务提供者_Laravel依赖注入与容器绑定【深度】  php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】  Laravel怎么自定义错误页面_Laravel修改404和500页面模板  Laravel怎么生成二维码图片_Laravel集成Simple-QrCode扩展包与参数设置【实战】  Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转  高性能网站服务器部署指南:稳定运行与安全配置优化方案  如何确保西部建站助手FTP传输的安全性?  详解CentOS6.5 安装 MySQL5.1.71的方法  C语言设计一个闪闪的圣诞树  如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环  Laravel如何实现全文搜索功能?(Scout和Algolia示例)  Laravel如何使用Gate和Policy进行授权?(权限控制)  如何用AI一键生成爆款短视频文案?小红书AI文案写作指令【教程】  Laravel如何处理异常和错误?(Handler示例)  Laravel定时任务怎么设置_Laravel Crontab调度器配置  如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体  在线教育网站制作平台,山西立德教育官网?  php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】  Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程  七夕网站制作视频,七夕大促活动怎么报名?  重庆市网站制作公司,重庆招聘网站哪个好?  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程  如何用PHP工具快速搭建高效网站?  详解vue.js组件化开发实践  如何快速辨别茅台真假?关键步骤解析  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  Laravel如何创建自定义中间件?(Middleware代码示例)  Android滚轮选择时间控件使用详解  海南网站制作公司有哪些,海口网是哪家的?  Laravel怎么处理异常_Laravel自定义异常处理与错误页面教程  微信小程序 闭包写法详细介绍