Skip to content

🔒 GetSecurityAdvisories

获取 Packagist 上全部已知的安全公告(按包名分组)。

何时使用

🔒 构建 PSIRT / 漏洞情报库,定期全量拉取已知公告;🛡️ 启动时加载一次全量公告做本地缓存,再用增量接口保持新鲜;📋 生成组织级依赖安全报告。

签名

go
func (c *ComposerClient) GetSecurityAdvisories() (*domain.AdvisoriesResponse, error)

参数

本方法无参数。

返回值

类型说明
结果*domain.AdvisoriesResponseAdvisoriesmap[包名][]*Advisory,含 CVE、影响版本、链接等
错误errorHTTP 失败、非 200、JSON 解析失败时返回

对应端点:GET https://packagist.org/api/security-advisories/?updatedSince=0

示例

go
package main

import (
	"fmt"
	"log"
	"time"

	"github.com/scagogogo/composer-skills/pkg/client"
)

func main() {
	c := client.NewComposerClient(30 * time.Second)

	resp, err := c.GetSecurityAdvisories()
	if err != nil {
		log.Fatal(err)
	}
	for pkg, advisories := range resp.Advisories {
		fmt.Printf("包 %s%d 条公告\n", pkg, len(advisories))
		for _, a := range advisories {
			fmt.Printf("  - %s: %s (CVE=%s)\n", a.AdvisoryID, a.Title, a.Cve)
		}
	}
}

进阶

端点变更

旧的 /advisories.json 端点已被 Packagist 废弃(返回 404)。本方法改用 /api/security-advisories/,并通过 updatedSince=0 获取全部公告——该端点要求至少带一个查询参数,否则返回 400。

基于 MIT 许可证发布