🔒 GetSecurityAdvisories
获取 Packagist 上全部已知的安全公告(按包名分组)。
何时使用
🔒 构建 PSIRT / 漏洞情报库,定期全量拉取已知公告;🛡️ 启动时加载一次全量公告做本地缓存,再用增量接口保持新鲜;📋 生成组织级依赖安全报告。
签名
go
func (c *ComposerClient) GetSecurityAdvisories() (*domain.AdvisoriesResponse, error)参数
本方法无参数。
返回值
| 值 | 类型 | 说明 |
|---|---|---|
| 结果 | *domain.AdvisoriesResponse | Advisories 为 map[包名][]*Advisory,含 CVE、影响版本、链接等 |
| 错误 | error | HTTP 失败、非 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。
- 🎯 只查某些包用
GetSecurityAdvisoriesForPackages。 - ⏱️ 增量同步用
GetSecurityAdvisoriesSince。