Skip to content

🎯 GetSecurityAdvisoriesForPackages

获取指定一批包的安全公告(按包名分组)。

何时使用

🎯 已知项目直接依赖列表,只关心这些包的漏洞时;🚀 CI 流水线在 composer install 后批量校验依赖安全;🔎 针对某个 vendor 做专项排查。

签名

go
func (c *ComposerClient) GetSecurityAdvisoriesForPackages(packageNames []string) (*domain.AdvisoriesResponse, error)

参数

参数类型说明
packageNames[]string包名列表,如 []string{"symfony/http-foundation", "guzzlehttp/guzzle"}

返回值

类型说明
结果*domain.AdvisoriesResponseAdvisoriesmap[包名][]*Advisory,仅含请求的包
错误errorHTTP 失败、非 200、JSON 解析失败时返回

对应端点:GET https://packagist.org/api/security-advisories/?packages[]={pkg}&packages[]={pkg}

示例

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.GetSecurityAdvisoriesForPackages([]string{
		"symfony/http-foundation",
		"guzzlehttp/guzzle",
	})
	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\n", a.Title, a.AffectedVersions)
		}
	}
}

进阶

基于 MIT 许可证发布